Ios 先生保存到永久商店并等待冻结我的应用程序

Ios 先生保存到永久商店并等待冻结我的应用程序,ios,core-data,nsmanagedobjectcontext,magicalrecord,Ios,Core Data,Nsmanagedobjectcontext,Magicalrecord,应用程序冻结,Xcode在com.apple.main-thread上运行的MR_saveToPersistentStoreAndWait行上暂停。为什么会结冰,如何修复 编辑: 如果我将该行替换为以下内容: self.catContext = [NSManagedObjectContext MR_context]; Cat *cat = [Cat MR_createEntityInContext:self.catContext]; [self doSomething:@"someText"

应用程序冻结,Xcode在com.apple.main-thread上运行的MR_saveToPersistentStoreAndWait行上暂停。为什么会结冰,如何修复

编辑: 如果我将该行替换为以下内容:

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];
                }
            }];

应用程序不再冻结。但是,当我稍后访问cat时,没有任何信息保存到cat(名称等)。

为什么不使用
saveinbackgroundithblock
或一些最新的等效工具来更新完成块中的UI?

saveinbackgroundithblock不推荐使用。如果我不能在这种情况下使用它,我不知道为什么会有MR_saveToPersistentStoreAndWait存在。一定有相当于
performBlock
的东西,而不是
performBlockAndWait
,带有一个完成块。我不使用MR框架(它不会简化任何事情)。检查文档。您正在创建/更改多少记录?很多您是否有一个同时保存上下文的后台线程?一般来说,执行保存操作不应该无限期地阻塞,但如果要进行大量更改,则可能会出现这种情况。但是,如果另一个上下文锁定了持久存储,这可能会导致其他存储被阻塞。
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];