一時的なManagedObjectContext(MOC)の変更を永続化されたものにマージする必要があります。これは私がこれを達成した例です。 私はスレッディング(スレッドごとに1つのMOC)を使用していますが、実際にはスレッドがなくてもうまくいくはずです。
あなたはtempMOCで変更を保存するには、このメソッドを呼び出します。
- (void) saveNewEntry {
NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter];
// Subscribe to "NSManagedObjectContextDidSaveNotification"
// ..which is sent when "[tempMOC save];" is called.
[dnc addObserver: self
selector: @selector(mergeChanges:)
name: NSManagedObjectContextDidSaveNotification
object: tempMOC];
// Save changes
[tempMOC save];
// Remove subscribtion
[dnc removeObserver: self
name: NSManagedObjectContextDidSaveNotification
object: tempMOC];
}
...への通知をオフに解雇れる:
- (void) mergeChanges: (NSNotification*) saveNotification {
// If youre using threads, this is necessary:
[self performSelectorOnMainThread: @selector(mergeToMainContext:)
withObject: saveNotification
waitUntilDone: NO];
// ...otherwise, you could do the merge in this method
// [persistedMOC mergeChangesFromContextDidSaveNotification: saveNotification];
}
...順番に呼び出す:
- (void) mergeToMainContext: (NSNotification*) saveNotification {
[persistedMOC mergeChangesFromContextDidSaveNotification: saveNotification];
}
私は完全な答えを書く時間がありませんでしたが、ここで説明されているようにマルチコンテキストのコア日付を試してみることができます。http://www.cocoanetics.com/2012/07/multi-context-coredata/ – Abizern