我想在objective C中(或者在Iphone SDK 3.0的帮助下)创建一个长度不超过15个字符的唯一字符串。
我需要这个mysql表。我知道mysql自动递增会对主键起作用,但我真的需要发送来自Iphone Itself.Every的唯一键,我的表中的记录必须有一个唯一键。
唯一字符串应唯一且由字母数字组成,最多15个字符
先谢谢你,斯里达尔,
发布于 2009-08-23 04:48:40
通常,我建议使用UUID/GUID (如NWCoder does in his link),但是UUID是16字节的原始数据,因此它不能用15字节的数据表示,更不用说15个字母数字字符了。
那么问题就变成了,如何“独一无二”?
只需使用递增的值和无符号整型或十六进制数据就可以很容易地实现表的唯一性。
世界上独一无二的将是更具挑战性的。您可以这样接近:生成一个UUID,然后使用MD5对其进行散列,然后获取尽可能多的位并将其转换为基(10+26+26表示区分大小写,10+26表示不区分大小写),并获取前15个字符。
只对用户是唯一的,但(如您稍后所述)在存在非互联网连接时是唯一的,最容易通过简单地生成15个字母数字的随机字符串来实现。这很可能在功能上等同于上面的UUID/MD5方法-本质上,合并的机会将非常非常小,并且考虑到用户只有少量的行程,基本上没有合并的机会(假设您适当地为随机数生成器播种)。
发布于 2009-08-24 15:22:15
对于这个问题,您缺少一个简单的答案。每个行程都有一个由两个数字组成的主键。
当在iphone上创建trip时,它会获得一个唯一的编号(即1,2,3,4,5)。
当行程与服务器同步时,您可以为iphoen指定一个特殊的唯一编号,该编号位于前面,例如,如果iphone编号为10421,则行程编号变为10421.1、10421.2等。)
这保证了所有的id总是唯一的。
发布于 2009-08-22 21:47:11
这个other stackoverflow answer与此类似,请查看。
https://stackoverflow.com/questions/1315746
复制相似问题