我有一些数据导出到XML文件并放入远程FTP服务器。
我必须用唯一属性识别每个对象,这并不重要,但必须是持久的总是=>它永远不会改变。
我不想创建唯一的属性,序列,序列等。
我正在使用objectID,但每次使用它都会得到一个新的引用。
我知道在保存对象之前,它有一个'temporal id',但是一旦保存它就会得到明确的。
我没有看到这一点,从来没有。
当我导出时,只需获取所有数据并循环,并始终获得新的引用:
NSURL *objectID = [[personalDataObject objectID] URIRepresentation];
// some of id received for the SAME OBJECT (no changes made, saved, ...)
// 61993296
// 62194624
感谢,
河
我使用%d而不是%@,现在返回的数据是:
x-coredata://F46F3300-8FED-4876-B0BF-E4D2A9D80913/DataEntered/p1
x-coredata://F46F3300-8FED-4876-B0BF-E4D2A9D80913/DataEntered/p2
答案 0 :(得分:17)
NSManagedObjectID
不保证一致。它可以根据许多因素进行更改,包括数据迁移和其他因素。如果您将其用作对象的唯一标识符,请停止。
您需要在线程之间传递引用时,唯一需要使用NSManagedObjectID
的时间。除了这种情况,你不应该依赖它。
如果您需要唯一ID,请创建一个并将其存储在您的实体中。
答案 1 :(得分:3)
我认为这可能是一个报道问题。您显示的应该是URI / UUID的数字是方式,简短的方式。
UUID(普遍独特 标识符),也称为GUID (全球唯一标识符)或IID (接口标识符),是128位 值保证是唯一的。一个UUID 在空间和空间上都是独一无二的 时间通过组合一个独特的值 它所在的计算机 生成 - 通常是以太网 硬件地址和值 代表的数量 自10月以来每隔100纳秒 15,1582年00:00:00。
UUID的标准格式 以ASCII表示的是一个字符串 例如,用连字符打断 68753A44-4D6F-1226-9C60-0050E4C00067。 十六进制表示看起来像你一样 可能期望,就像一个数字列表 值前面带有0x。例如, 0xD7,0x36,0x95,0x0A,0x4D,0x6E, 0x12,0x26,0x80,0x3A,0x00,0x50, 0xE4,0xC0,0x00,0x67。用一个 UUID,你只需创建它然后 将结果字符串复制到您的 标头和C语言源文件。 因为UUID简单地表示为 一个字节数组,没有 字节序的考虑因素 不同的平台。
我认为你会看到不同的价值观,因为每次检查UUID时,你只会得到一块,而另外一块。表示为URI,它们看起来应该更像URL。它们肯定不会像整数。