В настоящее время в моем приложении есть 2 контекста. Мое приложение использует несколько вкладок, поэтому на одной вкладке могут отображаться данные, а на другой - в режиме ввода данных.
Есть один основной контекст, который я использую для чтения большей части данных для отображения. Когда я вставляю данные, я использую второй временный контекст, так как я не хочу, чтобы работа других вкладок сохраняла, возможно, неполные объекты, добавленные в контекст.
Я читал руководство по параллелизму яблок: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385-SW1
Это указывает на то, что вы должны использовать уведомления для распространения изменений между контекстами.
Оба моих контекста используют один и тот же объект хранилища распространения. У меня вопрос: если в контекст A на вкладке A будет внесено изменение, когда запрос на выборку будет повторно выдан на вкладке B с использованием контекста B, будут ли изменения просто отображаться на вкладке B?
Это то, что я наблюдаю сейчас. Я предполагаю, что кэширование основных данных выполняется на уровне хранилища распространения? Если это правильно, то синхронизация контекстов требуется только тогда, когда вы не собираетесь повторно запускать запрос на выборку, чтобы вы могли выборочно обновлять только те NSManagedObjects, которые изменились?
Вот как я получаю свой новый контекст:
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
NSManagedObjectContext *newContext;
if (coordinator != nil) {
newContext = [[NSManagedObjectContext alloc] init];
[newContext setPersistentStoreCoordinator:coordinator];
}