這是我的核心數據操作的代碼片段。大多數時候它都能正常工作。但是現在,當我添加核心數據調試參數以查看所有核心數據調用在多線程Core Data Concurrency Debugging上是否正常時,我在行上看到一個崩潰[contexts reset]; 。[managedObjectContext reset]上的核心數據崩潰;
- (void)readAllModelObjects {
NSFetchRequest * fr = [NSFetchRequest ....]
NSManagedObjectContext * context = [selg getChildContext];
[context performBlockAndWait:^{
NSArray * resultArray = [context executeFetchRequest:fr error: nil ];
NSArray * nonCoreDataModelObjectsArray = [self parseCoreDataObjectsToModel: resultArray];
_memberResultArray = nonCoreDataModelObjectsArray ;
}];
[context reset]; // This is the line it crashes .
}
- (NSManagedObjectContet *)getChildContext {
NSManagedObjectContext * privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
privateContext.parentContext = [self mainQueueManagedObjectContext];
return privateContext ;
}
- (NSArray *)parseCoreDataObjectsToModel:(NSArray *)cdObjectsArray {
// creates and initializes the model objects array (non managed object class objects) from core data objects
// return this array
}
只有一個連接到持久性存儲協調器主隊列上下文。對於爲核心數據操作創建的每個子上下文,這一個用作父項。
(void)readAllModelObjects按預期從後臺線程中調用。
我有以下錯誤從核心數據
CoreData`+[NSManagedObjectContext _
_Multithreading_Violation_AllThatIsLeftToUsIsHonor__]:
任何提示/建議,一定會幫我找出死機,請幫助。
請您詳細說明爲什麼在我們從核心數據中讀取對象時,調用reset是沒有用的? –