NSManagedObject的唯一标识符

Nic*_*ing 10 guid core-data objective-c

我需要为NSManagedObject我创建的类型获取唯一标识符.它必须在对象创建后立即可用,永不改变,并且完全独特.

这排除了NSManagedObjectID,因为这可以在保存上下文时发生变化.我相信-hash如果我的对象具有相同的属性,该方法可能是非唯一的.

我真的想避免在实体上创建一个无用的uniqueIdentifier UUID字段,因为这看起来很浪费和混乱.这里有最受欢迎的最佳做法吗?

hol*_*lex 14

尝试的URIRepresentation财产NSManagedObjectID.这是当前非常独特的ID,NSManagerObject但要小心,直到 NSManagedObject 没有保存它只给你一个临时ID,而不是永久ID,它们可能会有所不同.(我只是这么说,因为我不知道你想用什么以及如何使用这个唯一的ID.)

更新#1

不是一个虚构的唯一ID,这是每个人的纯粹唯一URL NSManagedObject(就像每个文件都有一个唯一的URL),使用它们,你可以NSManagedObject在丢失指针后再次找到原始文件.我知道这很难理解,但这是NSManagedObjectID它及其属性的重点.

(如果你不明白CoreData它们和它们的物体是如何工作的,那么你就不会贬低答案.请阅读更多文档,而不是毫无意义的贬低.)

更新#2

根据@NickLocking的评论,我会扩展上面答案的大胆部分:

直到保存 NSManagedObjectContext 新的仍然未保存的 NSManagedObject 类只有一个临时的唯一ID.在第一次保存后,他们将获得永久唯一ID.

  • 首次保存对象时,URIRepresentation会发生变化. (2认同)