当在NSOperation的主线程上的NSManagedObjectContext上调用deleteObject:
时,我还需要引用主线程上的objectID吗?目前,我在主线程从的NSOperation以下列方式删除NSManagedObject ...从NSOperation中删除主线程中的NSManagedObject
NSManagedObjectContext *mainContext = [[[UIApplication sharedApplication] delegate] managedObjectContext];
- (void)deleteObject:(NSManagedObjectID *)objectID
{
// Delete on main context on the main thread
[mainContext performSelectorOnMainThread:@selector(deleteObject:)
withObject:[mainContext objectWithID:objectID]
waitUntilDone:YES];
}
它的工作,但我想,以确保它不会对我以后炸毁。我不确定的是,如果[mainContext objectWithID:objectID]
引用NSOperation中的NSManagedObjectContext,或者因为该方法调用在performSelectorOnMainThread:withObject:waitUntilDone:
之内,是否全部在主线程上执行?
我正在使用你的第一种方法(GCD)。谢谢!要回答你的问题,我正在从一个JSON文件更新Core Data持久性存储,我正在下载并在NSOperation中进行解析。我根据当前的持久性存储NSManagedObjects检查JSON对象。如果持久性存储包含不在JSON中的对象,则删除NSManagedObject。 –