2015-12-22 138 views
0

我试图从托管对象上下文中检索一个对象,并在将它备份到云之后编辑一个或两个值。特别是,我想保存由云服务器提供的ID。ObjectForID返回什么类型的对象

要获取对象,我试图使用其managedObjectID检索它。

我曾尝试:

Contacts *object = [_managedObjectContext objectWithID:_moID]; 

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

,其中模具中是managedObject ID。

然后,我

object.cid = @99; //ie I set it equal to some number 

在这两种情况下跟进,虽然联系是一个NSManagedObject类,它抛出一个黄色的警告:

'Incompatible point types initializing contacts with an expression of type NSManagedObject'.

如果与其说这Contacts *object,我打电话它NSManagedObject *object,它不再抛出警告,但不会允许我说object.cid,因为它不再知道一个cid是什么。在这种情况下,它会抛出红色错误:

Property cid not found on object of type NSManagedObject.

任何人都可以提出适当的对象类型。在此先感谢您的任何建议。

回答

2

通过查看方法定义,您将看到返回的实例类型仅为NSManagedObject *,如警告所述。你需要做的就是投正确类型:

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

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

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