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

Ron*_*Ron 4 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中的内存/磁盘使用量应该是是个大问题.

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

谢谢,罗恩

Ale*_*lov 13

为什么不创建GUID,在iOS中调用CFUUID?你可以在这里阅读有关iPhone的GUID