从Swift在iOS上生成UUID



在我的iOS Swift应用程序中,我想生成随机UUID (GUID)字符串用作表键,下面的代码片段似乎起作用了:

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

这安全吗?

或者是否有更好的(推荐的)方法?

试试这个:

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

迅速3/4/5

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

您也可以直接使用NSUUID API:

let uuid = NSUUID()

如果你想把字符串的值取出来,你可以使用uuid.UUIDString .

请注意,NSUUID在iOS 6及更高版本中可用。

, 迅速4 ,

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

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

你也可以在can下面使用lowercase

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

输出

68 b696d7 - 320 - b - 4402 - a412 d9cee10fc6a3

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

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

每次生成一个新的:

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

UUID是一个简单的结构,其属性为uuidStringuuidString -返回由UUID创建的字符串,例如"E621E1F8-C36C-495A-93FC-0C247A3E6E5F"。

UUID保证唯一

斯威夫特代码:

let identifier = UUID().uuidString
Swift.print(identifier) // Result: "6A967474-8672-4ABC-A57B-52EA809C5E6D"

关于UUID的Apple官方文档。
全文https://tonidevblog.com/posts/how-to-generate-a-random-unique-identifier-with-uuid/

在macOS 13和Swift 5.7下,Foundation的UUID()方法确实返回一个大写的UUID,而Vapor Fluent至少是一个这样使用它的框架。因此,当你创建一个id=nil的新记录时,Fluent将获得一个新的大写UUID,并使用它存储新记录。另一方面,MySQL生成小写的UUID,如果在MySQL中创建记录,它将存储小写的UUID。MySQL和SQLite都将大写和小写键视为不同的。购者自慎。

但是…如果您使用以前读取的数据的UUID,那么用大写或小写的UUID保存它并不重要。你只需要确保不要改变钥匙的大小写。

相关内容

  • 没有找到相关文章

最新更新