2

ドキュメント ベースのアプリで Core-data を使用するためのむらのある情報があるようです。現在のドキュメントでモーダル ウィンドウを実行するウィンドウ コントローラーがあります。ユーザーがテキスト フィールドにデータを入力すると、変更可能な文字列の配列が作成されます。これを使用してモデル オブジェクトを作成し (多対多の関係)、コア データ スタックに保存します。これは、モーダル ウィンドウのコントローラーにあるメソッドです。

 - (IBAction)saveContext:(id)sender {

if ([tagsArray count] != 0) {
    int objectcount;
    for (objectcount = 0; objectcount < [tagsArray count]; objectcount ++){
        Tag *singleTag = (Tag *) [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:self.managedObjectContext];
        singleTag.tagname = [tagsArray objectAtIndex:objectcount];
        singleTag.video = selectedFile;
        NSLog(@"Tagnames %@",singleTag.tagname);
        
    }
}
[NSApp stopModalWithCode:NSOKButton];
[self.window close];
}

わかりました、コンパイラは self.managedObjectContext に満足していません。このクラスにはコンテキストがないため、当然のことです。私が理解しているように、ドキュメントベースのアプリでは、MOC を 1 つだけ使用する必要があります。ドキュメントの MOC にアクセスする方法がわかりません。Apple のドキュメントは少し不明確です。

管理対象オブジェクト コンテキストの取得

OS X の場合:

単一コーディネーター アプリケーションでは、アプリケーションのコンテキストをアプリケーション デリゲートから直接取得できます。

ドキュメント ベースのアプリケーションでは、ドキュメント インスタンスから直接コンテキストを取得できます。

これが何を意味するのか分からないと言うのは恥ずかしい。ドキュメント インスタンスからコンテキストを取得するにはどうすればよいですか? ある種のグローバル変数ですか?どんな助けでも大歓迎です。

4

2 に答える 2

3

モーダル ウィンドウを作成するときに、使用するドキュメントmanagedObjectContextを渡します。

したがって、モーダルウィンドウのコントローラークラスにプロパティがあり、modalWindow.moc=self.managedObjectContext呼び出す前に設定するmodalWindow.showか、使用しているものは何でも設定できます。selfあなたの NSPersistentDocument サブクラスであると仮定します。

既存の MOC のドキュメントを使用する必要があります。新しい MOC を作成しないでください (作成できますが、そこに移動したくありません)。

ドキュメント MOC は、Core Data ストアにオブジェクトを追加するための決定的なアクセス ポイントです。

于 2013-10-08T01:46:53.820 に答える
2

NSPersistentDocumentmanagedObjectContext管理対象オブジェクトのコンテキストを取得するメソッドがあります。

NSManagedObjectContext *context = [yourPersistentDocument managedObjectContext];
于 2013-08-17T19:10:14.893 に答える