我正在开发一个应用程序,允许用户在多个设备上编辑同一个数据库.编辑将包括添加/删除/修改对象,因此为了使同步工作更容易,我想为对象分配唯一的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中的内存/磁盘使用量应该是是个大问题.
任何想法/警告/建议将不胜感激.
谢谢,罗恩
| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |