當在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。 –