0

У меня есть подкласс NSOperation, который я использую для синхронизации coredata и облачного набора. Подкласс имеет свой собственный контекст privatequeue с основным контекстом, поскольку он является родительским. У меня возникла путаница в том, когда использовать блок выполнения с частным контекстом. Должен ли я использовать его для каждой выборки, сохранения, доступа к NSMangedObject?Когда использовать performblock для операций с coredata?

ответ

0

Да, когда вы работаете с частным контекстом, вы должны использовать performBlock для каждой операции.

Соответствующая ссылка: Core Data Programming Guide: Concurrency.

+0

[ссылка] (https://github.com/0x73/CKSIncrementalStore/blob/master/CKSIncrementalStore/CKSIncrementalStore.swift) Это то, что я использую, вместо того, чтобы использовать его в качестве дополнительного магазина я просто с помощью логика, автор здесь не использовал исполнительный блок в любом месте. Я что-то пропустил. – user3519594

+0

@ user3519594, я считаю, автор CKSIncrementalStore чего-то не хватает. Его/ее код будет выглядеть так, как будто он работает, пока он не сломается. MOC не являются потокобезопасными. Частные MOC предназначены для доступа только из частного потока, которым они управляют сами. И вы можете добавить работу в этот поток, используя 'performBlock' или' performBlockAndWait'. Если вы обращаетесь к частному MOC без использования этих методов, это может выглядеть так, как будто оно работает, но рано или поздно оно сломается. – FreeNickname

+0

@ user3519594, посмотрите здесь: [Руководство по программированию основных данных: параллелизм] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Concurrency.html). – FreeNickname

 Смежные вопросы

  • Нет связанных вопросов^_^