我正在开发一款应用程序,该应用程序允许用户在多个设备上编辑同一个数据库。编辑将包括添加/删除/修改对象,因此为了使同步工作更容易,我想为对象分配唯一的ID,并且希望减少这些ID与其他设备上独立生成的ID冲突的机会。如何为设备上的对象创建唯一ID
我有一个想法是使用当前时间来生成一个唯一的ID。目前,我正在思考这样创建一个ID:
unsigned long long idNumber = ([NSDate timeIntervalSinceReferenceDate] * 1000000);
这将创建一个64位整数,它是自基准日的微秒数。我相信这个数字需要花费50万年才能完成,所以我不认为我需要担心任何Y2K类型的问题。
我可以在NSTimeInterval存储的ID,但我得到了平等的比较难受双打,即使它可能会工作。除此之外,我可以将一个64位整数转换成字符串并从一个字符串转换而来,而不会失去任何精度,我不认为我可以对双打表示同样的看法。
这对我来说有点像“黑客”,虽然我看不出有什么理由不起作用。它似乎也应该可移植到任何支持“无符号long long”的设备。我唯一的问题是我需要使用8字节来存储ID,但我不认为我的系统中ID的数量很大,所以我不认为ID的内存/磁盘使用率应该是个大问题。
任何想法/警告/建议将不胜感激。
谢谢你,罗恩
感谢您的指针......这正是我所期待的! – Ron 2011-06-14 04:14:39
从iOS 6开始,您可以使用:NSString * UUID = [[NSUUID UUID] UUIDString]; – Symmetric 2012-11-19 18:42:44