我正在開發一款應用程序,該應用程序允許用戶在多個設備上編輯同一個數據庫。編輯將包括添加/刪除/修改對象,因此爲了使同步工作更容易,我想爲對象分配唯一的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