2009-08-22 115 views
0

我想在目標C(或藉助Iphone SDK 3.0)的幫助下創建一個長度不超過15個字符的唯一字符串。創建唯一字符串Iphone SDK 3.0

我需要這個mysql表。我知道MySQL的自動增量會做主鍵,但我真的需要從Iphone Itself發送唯一的密鑰。我的表中的每條記錄都必須有一個唯一的密鑰。

的唯一字符串應該是 獨特 和字母數字 和最多15個字符

由於事先 斯里達爾,

回答

1

通常,我會推薦一個UUID/GUID(如NWCoder does in his link),但UUID是16個字節的原始數據,所以它不能用15個字節的數據表示,遠遠少於15個字母數字字符。

那麼問題就變成了「多麼獨特」?

只有表格纔是唯一的,只需使用遞增值和無符號整數或十六進制數據即可。

獨特的世界將更具挑戰性。你可以通過生成一個UUID,然後用MD5對它進行哈希處理,然後儘可能多地將其轉換爲基地址(10 + 26 + 26,區分大小寫,10 + 26不區分大小寫)前15個字符。

對於只有用戶而言是唯一的,但在非互聯網連接的情況下(如後面所描述的那樣)是唯一的,只需簡單地生成一個由15個字母數字組成的隨機字符串即可。這可能在功能上等同於上面的UUID/MD5方法 - 基本上碰撞的機會非常小,並且由於用戶只有少量的行程,所以基本上沒有碰撞的機會(假設你種子適當的隨機數發生器)。

1

對此有一個簡單的答案,你錯過了。每次旅行都有一個由兩個數字組成的主鍵。

當在iphone上創建旅程時,它會得到一個唯一的號碼(即1,2,3,4,5)。

當跳閘與服務器同步,你給IPHOEN一個特殊的唯一編號去前面,也就是說,如果iphone號碼是10421,行程數變爲10421.1,10421.2等)

這保證了所有的ID都是唯一的。