2011-06-13 71 views
4

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

任何想法/警告/建議將不勝感激。

謝謝你,羅恩

回答

13

你爲什麼不創建GUID,這叫做CFUUID iOS中?你可以read here about GUIDs for iPhone

+0

感謝您的指針......這正是我所期待的! – Ron 2011-06-14 04:14:39

+1

從iOS 6開始,您可以使用:NSString * UUID = [[NSUUID UUID] UUIDString]; – Symmetric 2012-11-19 18:42:44

1

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

+2

iOS5現已棄用 – Alan 2011-12-24 00:24:44

+0

就這樣。看到其他答案! – buildsucceeded 2011-12-31 06:38:55