我正在创建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
}
有谁知道我在这里做错了什么?