【问题标题】:Nil for MR_inContextMR_inContext 为零
【发布时间】:2016-02-10 01:31:05
【问题描述】:

根据本教程 (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 的接收器方法)

【问题讨论】:

  • 嗨。看起来device 已插入上下文但未保存(有一个临时的ObjectID)。可以调试MR_inContext:的方法吗?
  • 你几乎是对的。但是感谢您的帮助!我在错误的上下文中创建了设备,这就是我无法检索它的原因。

标签: ios objective-c core-data magicalrecord


【解决方案1】:

确保在后台上下文中检索数据之前保存数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2017-02-12
    • 2017-06-08
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多