Достаточно ли создать новый NSManagedObjectContext для каждого нового NSOperation или Thread? - PullRequest
0 голосов
/ 01 июня 2011

Мне нужно использовать базовые данные внутри операций NSOperationQueue. Я слышал, что достаточно создать экземпляр NSManagedObject для каждого отдельного NSOperation или Thread, и тогда у Core Data не будет проблем многопоточности. Это правильно?

Будут ли обновляться другие MOC автоматически при изменении других в NSOperations?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Вы правы, что вам нужен новый MOC (контекст управляемого объекта) для каждого потока / операции. Присвойте новому контексту тот же постоянный координатор хранилища, что и ваш основной контекст, а затем при сохранении контекстов вам нужно обработать слияние. Смотрите мой предыдущий ответ здесь, который объясняет, как выполнить слияние:

Как работать с временными экземплярами NSManagedObject?

1 голос
/ 01 июня 2011

Будут ли обновляться другие MOC автоматически при изменении других в NSOperations?

Нет.Вам необходимо обработать уведомление NSManagedObjectContextDidSaveNotification и использовать mergeChangesFromContextDidSaveNotification: для объединения изменений.См. документацию для деталей и других способов сделать это.

...