Ios 不';t MagicalRecord后台线程中的工作?
似乎我什么都试过了,但似乎只在主线程中有效。例如:Ios 不';t MagicalRecord后台线程中的工作?,ios,multithreading,thread-safety,magicalrecord,background-thread,Ios,Multithreading,Thread Safety,Magicalrecord,Background Thread,似乎我什么都试过了,但似乎只在主线程中有效。例如: [SomeClass MR_createEntity]; [[NSManagedObjectContext MR_defaultContext] MR_saveWithOptions:MRSaveSynchronously completion:^(BOOL success, NSError *error) { if (success) { NSLog(@"You successfully saved
[SomeClass MR_createEntity];
[[NSManagedObjectContext MR_defaultContext] MR_saveWithOptions:MRSaveSynchronously completion:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"You successfully saved your context.");
} else if (error) {
NSLog(@"Error saving context: %@", error.description);
}
}];
如果此代码在主线程中运行,则success==YES
否则(在后台线程中),它将给出success==NO
。在这两种情况下错误==nil
那么,调用后台保存线程是不可能的吗?最后,我没有创建一个具有完整后台MagicalRecord工作的可行项目
对我来说,最好的解决方案是只在主线程中更新数据库,并在任何线程(包括后台)中读取数据库。此外,我还显示了数据库更新的自定义进度视图。始终从主线程调用完成块,下面是一个应该可以工作的示例:
Person *person = ...;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
Person *localPerson = [person MR_inContext:localContext];
localPerson.firstName = @"John";
localPerson.lastName = @"Appleseed";
} completion:^(BOOL success, NSError *error) {
self.everyoneInTheDepartment = [Person findAll];
}];
参考:默认上下文是主线程上下文。也许您指的是[NSManagedObjectContext MR_saveWithBlock:]方法?这个库非常奇怪。现在它工作了。。。每一秒。为什么?检查了所有东西,问题出在图书馆