这是我的核心数据操作的代码片段。大多数时候它都能正常工作。但是现在,当我添加核心数据调试参数以查看所有核心数据调用在多线程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是没有用的? –