如何为跨设备对象创建唯一标识符?

4
我正在开发一款应用程序,可以让用户在多个设备上编辑同一个数据库。编辑包括添加/删除/修改对象,为了使同步工作更容易,我想给对象分配唯一的ID,并减少这些ID与其他设备上独立生成的ID冲突的机会。
我想到的一个方法是使用当前时间来生成唯一的ID。我目前的想法是创建类似于以下代码的ID: unsigned long long idNumber = ([NSDate timeIntervalSinceReferenceDate] * 1000000);
这将创建一个64位整数,表示自参考日期以来的微秒数。我相信它需要大约500,000年才能使该数字环绕,因此我认为我不需要担心任何Y2K类型的问题。
我可以将NSTimeInterval存储为ID,但是我对比较双精度浮点数的相等性感到不舒服,尽管它可能有效。除此之外,我可以将64位整数转换为字符串,而不会失去任何精度,而我认为我不能对双精度浮点数做出同样的说法。
这对我来说感觉有点像“黑客”,尽管我看不到它不起作用的原因。它似乎也应该适用于支持“unsigned long long”的任何设备。我的唯一问题是我需要使用8字节来存储ID,尽管我不认为我的系统中ID的数量会很大,因此我认为来自ID的内存/磁盘使用不应该是一个大问题。
如有任何想法/警告/建议,将不胜感激。
谢谢, Ron
2个回答

13

谢谢指针...它正好做到了我想要的! - Ron
1
从iOS 6开始,您可以使用:NSString *UUID = [[NSUUID UUID] UUIDString]; - Symmetric

1
此外,使用[[UIDevice currentDevice] uniqueIdentifier]怎么样?

2
这在iOS5中已经被弃用。 - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接