0

我有一個NSOperation的子類,用於同步coredata和雲套件。這個子類擁有自己的私有隊列上下文,並且包含主上下文。我對什麼時候使用帶有私有上下文的執行塊有困惑。我必須使用它進行每次抓取,保存,訪問NSMangedObject?何時使用performblock進行coredata操作?

回答

0

是的,當您使用私有上下文時,必須對每個操作使用performBlock。

相關鏈接: Core Data Programming Guide: Concurrency

+0

[鏈接](https://github.com/0x73/CKSIncrementalStore/blob/master/CKSIncrementalStore/CKSIncrementalStore.swift) 這是我使用的,而不是使用它作爲一個增量商店什麼,我只是用作者在這裏的邏輯沒有在任何地方使用performblock。我錯過了什麼。 – 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