在iOS 5中,NSManagedObjectContext有几种新方法,performBlock:和performBlockAndWait:.实际使用的这些方法是什么?它们在旧版本中取代了什么?什么样的街区应该传递给他们?我该如何决定使用哪个?如果有人有一些使用它们的例子,那就太好了.
我正在NSManagedObjectContext私有队列中创建一个处理来自文件和/或服务的数据更新:
NSManagedObjectContext *privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
privateContext.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator;
Run Code Online (Sandbox Code Playgroud)
由于我使用的是私有队列,我不完全理解performBlock:和performBlockAndWait:方法之间的区别......为了执行我的数据更新,我目前正在这样做:
[privateContext performBlock: ^{
// Parse files and/or call services and parse
// their responses
// Save context
[privateContext save:nil];
dispatch_async(dispatch_get_main_queue(), ^{
// Notify update to user
});
}];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的数据更新是同步和顺序进行的,所以我认为这是保存上下文的正确位置,对吧?如果我做错了什么,如果你告诉我,我会很感激.另一方面,这段代码是否相同?:
[privateContext performBlockAndWait: ^{
// Parse files and/or call services and parse
// their responses
// Save context
[privateContext save:nil];
}];
// Notify update to user
Run Code Online (Sandbox Code Playgroud)
我想这是保存上下文的正确位置......这两种方法之间有什么区别(如果有的话,在这种情况下)?
如果不是执行同步服务调用或文件解析,我需要执行异步服务调用怎么办?如何管理这些数据更新?
提前致谢
synchronization asynchronous core-data nsmanagedobjectcontext ios