objective-c - NSManagedObject 的唯一标识符

标签 objective-c core-data guid

我需要为我创建的 NSManagedObject 类型获取唯一标识符。它需要在对象创建后立即可用、永不更改且完全唯一。

这排除了 NSManagedObjectID,因为它可以在保存上下文时更改。我相信如果我的对象具有相同的属性,-hash 方法可能是非唯一的。

我真的很想避免在实体上创建一个无用的 uniqueIdentifier UUID 字段,因为这看起来既浪费又困惑。这里有公认的最佳实践吗?

最佳答案

尝试 NSManagedObjectIDURIRepresentation 属性。这是当前 NSManagedObject 的非常独特的 ID,但要小心直到 NSManagedObject 未保存它只给你一个临时 ID,不是永久性的,它们可能会有所不同。 (我之所以这么说是因为我不知道您想要使用唯一 ID 的目的和方式。)

更新 #1

不仅仅是一个虚构的唯一ID,这是每个个体NSManagedObject的唯一URL(就像每个文件都有一个唯一的URL ), 使用它们你可以在丢失它们的指针后再次找到原来的 NSManagedObject。我知道这很难理解,但这就是 NSManagedObjectID 及其属性的意义所在。

(如果您不了解 CoreData 及其对象的工作原理,您不会对答案投反对票。请阅读更多文档,而不是毫无意义的投反对票。)

更新 #2

根据@NickLocking 的评论,我将扩展上面答案的粗体部分:

until saving the NSManagedObjectContext for the new and still unsaved NSManagedObject 类有一个临时的只有唯一 ID。第一次保存后,将获得永久唯一ID。

关于objective-c - NSManagedObject 的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554138/

相关文章:

iphone - 使用 UILabels 以及其中的文本创建自定义 UITextView

iphone - 更多 iCloud 核心数据同步问题

iphone - 什么时候使用存档: method of NSManagedObjectContext

ios - 将所有核心数据代码整理到自己的类中

delphi - 在 Delphi IDE 中生成新的随机 GUID

访问 Web 服务时的 Android 应用程序安全性

ios - 从 NSMutableArray 对象属性中删除重复对象?

iphone - 检测 UIDatePicker 是否在滚动?

ios - 替换数组中字典中的对象

sql-server - 将所有 PK 和 FK GUID 列和关系转换为 int 的最快方法是什么?