Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不';t MagicalRecord后台线程中的工作?_Ios_Multithreading_Thread Safety_Magicalrecord_Background Thread - Fatal编程技术网

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:]方法?这个库非常奇怪。现在它工作了。。。每一秒。为什么?检查了所有东西,问题出在图书馆