创建唯一字符串Iphone SDK 3.0

创建唯一字符串Iphone SDK 3.0,iphone,objective-c,xcode,sdk,Iphone,Objective C,Xcode,Sdk,我想在objective C中创建一个长度不超过15个字符的唯一字符串(或者借助Iphone SDK 3.0) 我需要这个mysql表。我知道mysql auto increment可以用于主键,但我确实需要从Iphone本身发送唯一的键。我表中的每个记录都必须有一个唯一的键 唯一的字符串应该是 独特的 和字母数字 最多15个字符 提前感谢,, Sridhar,这与检查类似。通常,我建议使用UUID/GUID(as),但UUID是16字节的原始数据,因此无法用15字节的数据表示,更不用说15个字

我想在objective C中创建一个长度不超过15个字符的唯一字符串(或者借助Iphone SDK 3.0)

我需要这个mysql表。我知道mysql auto increment可以用于主键,但我确实需要从Iphone本身发送唯一的键。我表中的每个记录都必须有一个唯一的键

唯一的字符串应该是 独特的 和字母数字 最多15个字符

提前感谢,,
Sridhar,

这与检查类似。

通常,我建议使用UUID/GUID(as),但UUID是16字节的原始数据,因此无法用15字节的数据表示,更不用说15个字母数字字符了

那么问题就变成了,如何“独特”

只对该表进行唯一化很容易,只需使用递增值和无符号int或hex数据即可

世界所独有的将是更具挑战性的。您可以通过生成UUID,然后使用MD5对其进行散列,然后尽可能多地提取其中的位,并将其转换为base(10+26+26表示区分大小写,或10+26表示不区分大小写)并提取前15个字符来接近


仅对用户而言是唯一的,但(如您稍后所述)在非互联网连接的情况下是唯一的,只需生成15个字母数字的随机字符串即可。这可能在功能上等同于上面的UUID/MD5方法-基本上,碰撞的可能性非常小,并且考虑到用户只会有几次行程,基本上没有碰撞的可能性(假设您适当地为随机数生成器设置种子).

有一个简单的答案,你不知道。每次行程都有一个由两个数字组成的主键

在iphone上创建旅行时,它会得到一个唯一的数字(即1、2、3、4、5)

当一次旅行与服务器同步时,您会给iphone一个特殊的唯一号码,该号码位于前面,即如果iphone号码为10421,则旅行号码将变为10421.1、10421.2等)

这保证了所有id始终是唯一的