从Swift在iOS上生成UUID


296

在我的iOS Swift应用中,我想生成随机UUID(GUID)字符串用作表键,此代码段似乎可以正常工作:

let uuid = CFUUIDCreateString(nil, CFUUIDCreate(nil))

这样安全吗?

还是有更好的(推荐)方法?


5
您还可以使用let uuid = NSUUID.UUID()。UUIDString
Yatheesha BL


1
除了接受您的修改外,请接受其中一个答案。由于您按照@AhemdAlHafoudh提出的方式进行操作,因此我建议您接受他的回答。
DarkDust 2014年

知道了 谢谢...完成。
zacjordaan 2014年

Answers:


627

试试这个:

let uuid = NSUUID().uuidString
print(uuid)

迅捷3/4/5

let uuid = UUID().uuidString
print(uuid)

6
在XCode 6.1中,我发现此错误:'UUID()'无效:使用对象构造'NSUUID()'。我们应该将其更改为NSUUID()。UUIDString
好的,2014年

上面的建议和打电话没什么不同NSUUID.init().UUIDString,对吧?
凯尔·雷德费恩

4
从Xcode 8(测试版),iOS 10和Swift 3开始,此名称已重命名为UUID().uuidString
califrench '16

介意将此添加到答案中吗?
艾哈迈德·哈弗德

1
嗨,我使用了此方法UUID()。uuidString,但每次使用它似乎都会返回不同的字符串,我希望它仅对我安装的应用程序为1值。有见识吗?
nerezza '16

28

您也可以只使用NSUUID API:

let uuid = NSUUID()

如果您想取回字符串值,可以使用uuid.UUIDString

请注意,NSUUIDiOS 6及更高版本提供该功能。



13

对于Swift 3,许多Foundation类型都删除了'NS'前缀,因此您可以通过来访问它UUID().uuidString


8

can也可以lowercase在下面使用它

let uuid = NSUUID().UUIDString.lowercaseString
print(uuid)

输出量

68b696d7-320b-4402-a412-d9cee10fc6a3

谢谢 !


1
谢谢。它现在NSUUID().uuidString.lowercased()
帕特里克·杜拉

4
像这样使用小写字母有什么好处?
路加·史坦纳

也许比大写更令人赏心悦目?
tgunr

5

每次都会生成相同的内容:

if let uuid = UIDevice.current.identifierForVendor?.uuidString {
    print(uuid)
}

每次将生成一个新的:

let uuid = UUID().uuidString
print(uuid)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.