我想在目标C(或借助Iphone SDK 3.0)中创建长度不超过15个字符的唯一字符串。
我需要这个用于mysql表。我知道mysql自动增量将为主键做,但我真的需要从Iphone Itself发送唯一键。我表中的每条记录都必须有一个唯一的密钥。
唯一字符串应该是 独特 和字母数字 最多15个字符
先谢谢, 斯里达尔,
答案 0 :(得分:1)
通常,我建议使用UUID / GUID(如NWCoder does in his link),但UUID是16字节的原始数据,因此不能用15个字节的数据表示,远远少于15个字母数字字符。< / p>
那么问题就变成了,“独特”如何?
表的唯一之处就是简单,只需使用递增值和unsigned int或hex数据。
世界的独特之处将更具挑战性。您可以通过生成UUID,然后使用MD5对其进行散列,然后尽可能多地将其转换为基数(对于区分大小写为10 + 26 + 26,对于不区分大小写为10 + 26)并且将其转换为前15个字符。
仅对用户而言是独一无二的,但(如稍后所述)在非互联网连接存在的情况下,通过简单地生成15个字母数字的随机字符串,可以轻松完成。这可能在功能上等同于上面的UUID / MD5方法 - 基本上,碰撞的可能性非常小,并且考虑到用户只会进行少数几次旅行,基本上没有可能发生碰撞(假设你是种子)适当的随机数发生器。)
答案 1 :(得分:1)
有一个简单的答案,你错过了。每次旅行都有一个由两个数字组成的主键。
当在iphone上创建旅行时,它会获得一个唯一的号码(即1,2,3,4,5)。
当旅行与服务器同步时,你给iphoen一个前面的特殊唯一号码,即如果iphone号码是10421,旅行号码变为10421.1,10421.2等)
这可以保证所有id都是唯一的。
答案 2 :(得分:0)