我正在尝试从托管对象上下文中检索对象,并在将其备份到云后编辑一两个值。特别是,我想保存云服务器提供的ID。
要获取对象,我尝试使用其managedObjectID检索它。
我试过了:
Contacts *object = [_managedObjectContext objectWithID:_moID];
和
Contacts *object = [self.managedObjectContext objectRegisteredForID:_moID];
其中moID是managedObject id。
然后我用
跟进object.cid = @99; //ie I set it equal to some number
在这两种情况下,虽然Contacts是NSManagedObject类,但它会抛出黄色警告:
'不兼容的点类型使用NSManagedObject'类型的表达式初始化联系人。
如果不是将其称为Contacts *object
,而是将其称为NSManagedObject *object
,它不会再发出警告但不会允许我说object.cid
因为它不再知道什么是cid是。在这种情况下,它会抛出红色错误:
在NSManagedObject类型的对象上找不到属性cid。
任何人都可以建议正确的对象类型。提前感谢任何建议。
答案 0 :(得分:2)
通过查看方法定义,您将看到返回的实例类型仅为NSManagedObject *
,如警告所示。你需要做的就是恰当地施放类型:
Contacts *object = (Contacts *)[_managedObjectContext objectWithID:_moID];
和
Contacts *object = (Contacts *)[self.managedObjectContext objectRegisteredForID:_moID];
注意,您的Contacts
假设是NSManagedObject
的子类。