如何跨设备为对象创建唯一ID

时间:2011-06-13 18:58:06

标签: ios

我正在开发一个应用程序,允许用户在多个设备上编辑同一个数据库。编辑将包括添加/删除/修改对象,因此为了使同步工作更容易,我想为对象分配唯一的ID,我希望减少这些ID与在其他设备上独立生成的ID冲突的可能性。

我的一个想法是使用当前时间生成唯一ID。我目前正在考虑创建这样的ID:

unsigned long long idNumber = ([NSDate timeIntervalSinceReferenceDate] * 1000000);

这将创建一个64位整数,它是自参考日期以来的微秒数。我相信这个数字需要50万年左右来包装,所以我认为我不需要担心任何Y2K类型的问题。

我可以将NSTimeInterval存储为ID,但是对于相等的双重比较我感到很不舒服,即使它可能会起作用。除此之外,我可以在不丢失任何精度的情况下将64位整数转换为字符串和从字符串转换。我不认为我可以对双打进行同样的说法。

这对我来说有点像“黑客”,虽然我看不出为什么它不起作用的任何理由。它似乎也可以移植到支持“unsigned long long”的任何设备上。我唯一的问题是我需要使用8个字节来存储ID,虽然我不希望我的系统中的ID数量那么大,所以我不认为ID中的内存/磁盘使用量应该是个大问题。

任何想法/警告/建议都将不胜感激。

谢谢, 罗恩

2 个答案:

答案 0 :(得分:13)

为什么不创建在iOS中调用CFUUID的GUID?你可以read here about GUIDs for iPhone

答案 1 :(得分:1)

此外,如何使用[[UIDevice currentDevice] uniqueIdentifier]