如何手动设置NSManagedObjectID?

时间:2010-10-17 02:46:01

标签: iphone objective-c core-data mongodb nsmanagedobject

我想将iPhone上的核心数据与Sinatra服务器上的MongoDB同步。

当iPhone从Node.js聊天服务器收到消息时,该消息包含发件人的BSON ObjectId(字符串)。为了让iPhone存储此消息,我在Core Data中找到具有相同Id的用户。我希望能够做objectWithID之类的事情。换句话说,我想将NSManagedObjectID设置为与MongoDB BSON ObjectIds相同。我要检查的另一件事是,如果在managedObjectContext中没有发送者id的用户,我将从persistentStore中取出他,如果他不在那里,我会创建他。要维护Message和Sender之间的关系,这还有很多工作要做。也许我应该将Message对象的sender属性作为他的BSON ObjectId存储为字符串而不是用户NSManagedObject。

你推荐什么?我也应该在iPhone上使用MongoDB吗?我刚刚意识到它有一个Objective-C驱动程序。但是我刚刚开始掌握Core Data,它有很酷的东西(比如撤消支持),我可能想要使用...现在,我只是用它来简单取出&持久存储,所以我可以替换它。但我计划在未来实施撤销支持,因为我认为这是一个很好的可用性。我更喜欢撤消选项而不必回答确认弹出窗口,例如,我喜欢GMail如何撤消发送或撤消删除邮件等。

谢谢!

马特

1 个答案:

答案 0 :(得分:3)

您无法手动设置核心数据对象的objectID。您可能希望添加一个名为externalID的属性,或者存储您从服务器获取的ID的内容。

有关是否使用核心数据的一些想法,请参阅this article。请注意,作者的建议是几乎在所有情况下都坚持使用Core Data。