2017-01-05 22 views
1

假設我已經在私有NSManagedObjectContext的performBlock中獲取了NSManagedObject。 我也在AppDelegate中保存了一個NSManagedObject的指針。所以基本上我把它放在'主線'上。 這可能會導致任何問題? 請注意,我總是訪問提交給正確上下文的performBlock中的屬性。指向執行塊之外的NSManagedObject的指針

+1

與CoreData,你不能在線程之間傳遞對象,而是傳遞它的ObjectID並再次從其他線程的數據存儲中獲取。 –

回答

2

不,你不能那樣做。對來自不同上下文的對象的引用可能會導致應用程序崩潰。

有幾種解決方案。例如,您的全局變量可以是一個唯一的屬性,您可以使用它來在正確的上下文中獲取對象。

某些操作可能與您的全局對象所在的環境相同。

最後,您還可以使用objectID(不透明類型NSManagedObjectID)在上下文之間傳遞對象。您可以使用object(with:)在特定線程中初始化您的本地對象。