【发布时间】:2014-08-22 20:12:27
【问题描述】:
self.catContext = [NSManagedObjectContext MR_context];
Cat *cat = [Cat MR_createEntityInContext:self.catContext];
[self doSomething:@"someText" completion:^(NSDictionary *results) {
if (results) {
cat.name = results[@"name"];
[cat.managedObjectContext MR_saveToPersistentStoreAndWait];
}
}];
应用程序冻结,Xcode 在 MR_saveToPersistentStoreAndWait 行暂停,该行在 com.apple.main-thread 上运行。为什么会冻结,如何解决?
编辑: 如果我用这个替换那行:
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
应用不再冻结。然而,当我稍后去访问猫时,没有任何信息被保存到猫(名字等)。
【问题讨论】:
-
您创建/更改了多少条记录?很多?您是否有一个同时保存上下文的后台线程?一般来说,保存不应该无限期地阻塞——但如果你有很多改变要做,它可能看起来就是这样。但是,如果另一个上下文对持久存储有锁定,这可能会导致您的另一个保存被阻止。
标签: ios core-data nsmanagedobjectcontext magicalrecord