iphone - 如何手动设置 NSManagedObjectID?

标签 iphone objective-c core-data mongodb nsmanagedobject

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

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

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

谢谢!

马特

最佳答案

您不能手动设置核心数据对象的 objectID。您可能想要添加一个名为 externalID 的属性或用于存储从服务器获得的 ID 的内容。

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

关于iphone - 如何手动设置 NSManagedObjectID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951803/

相关文章:

iphone - 来自 NSString 的 html 加载

iphone - 如何从uitableviewcell中的uibutton加载弹出窗口

iphone - 循环遍历 UITableView 的 UITableViewCells

ios - 在应用程序运行时启用/禁用核心数据的 iCloud 同步

iphone - 在 Assets 库中写入视频然后获取其属性的正确方法是什么

iphone - 是否有一个库可以处理可下载的应用内购买?

ios - 如何使我的注释标注指向不同的 View Controller ?

ios - TableView 动态行高未被调用

ios - 具有核心数据和 Restkit 的多 View Controller

ios - 核心数据后台线程未更新记录