MR为MR_inContext为零

时间:2015-11-09 11:53:44

标签: ios objective-c core-data magicalrecord

根据本教程(https://github.com/magicalpanda/MagicalRecord/blob/master/Docs/Working-with-Managed-Object-Contexts.md)我试图找到我的设备并进行更新。

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

}];

所以我做了:

CDDevice *device = [CDDevice MR_findFirstByAttribute:@"deviceName"
                       withValue:uniqueName];

找到了我的设备。在几个IF语句之后,我测试设备是否有适当的会话和授权代码,我想更新它。

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
                         CDDevice * localDevice = [device MR_inContext:localContext];
                         [localDevice updateFromDictionary:messageDictionary];
                 } completion:^(BOOL success, NSError *error) {
                         NET_LOG(@"Updating current device %@", device);
                 }];

但是我的localDevice一直都是零。是因为MR_findFirstByAttribute在不同的上下文中运行吗?更新设备的正确方法是什么?

所有这一切都在我的自定义串行队列上,因为此代码位于项目的网络部分。 (使用GCDAsyncUdpSocket的接收方法)

1 个答案:

答案 0 :(得分:0)

确保在后台环境中检索数据之前保存数据。