从ObjectForID返回什么类型的对象

时间:2015-12-22 00:41:17

标签: ios objective-c core-data nsmanagedobject

我正在尝试从托管对象上下文中检索对象,并在将其备份到云后编辑一两个值。特别是,我想保存云服务器提供的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。

任何人都可以建议正确的对象类型。提前感谢任何建议。

1 个答案:

答案 0 :(得分:2)

通过查看方法定义,您将看到返回的实例类型仅为NSManagedObject *,如警告所示。你需要做的就是恰当地施放类型:

Contacts *object = (Contacts *)[_managedObjectContext objectWithID:_moID];

Contacts *object = (Contacts *)[self.managedObjectContext objectRegisteredForID:_moID];

注意,您的Contacts假设是NSManagedObject的子类。