NSManagedObject属性重置为nil

时间:2013-04-26 19:44:58

标签: core-data nsmanagedobject uimanageddocument

我正在创建NSManagedObject子类(Group),设置一些属性/属性,然后将其传递给另一个对象(它存储在strong属性中)。此对象获取一些Group信息,并通过GCDAsyncSocket实例将其发送到服务器。服务器响应一些我想要存储为Group属性的信息。但是,当服务器响应并调用GCDAsyncSocket的委托时,所有Group的属性都设置为nil

由于我使用UIManagedDocument进行核心数据实施,当自动保存启动时,我收到以下错误:

  

错误域= NSCocoaErrorDomain代码= 134030“操作无法执行   完成。 (可可错误134030.)“UserInfo = 0x1f5c96f0   {NSAffectedObjectsErrorKey =(       “< Group:0x1f5aa300>(entity:Group; id:0x1f5c73b0;   data:{< entities here,nil values>})“),NSUnderlyingException =不能   更新从未插入的对象。}

但是,我知道插入了对象。它做了一些研究,发现了许多与使用两个或多个不同的托管对象上下文有关的问题,但这不是我的问题(因为我得到的唯一托管对象上下文来自UIManagedDocument)。 / p>

一些代码:

@property(nonatomic, strong) Group *currentGroup;

// ....

- (void)storeGroupOnServer:(Group *)group {
    self.currentGroup = group;
    NSLog("%@", self.currentGroup); // correct value for name attribute
    [self.currentGroup addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:NULL];

    // do some other things, unrelated to this problem
    // write data to socket
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    // This method is called before the socket returns with response data

    NSLog(@"%@", (Group *)object.name); // incorrect value for name attribute (nil)
    NSLog(@"%@", self.currentGroup); // same as above
}

有谁知道我在这里做错了什么?

0 个答案:

没有答案