ChatGPT解决这个技术问题 Extra ChatGPT

从 Swift 在 iOS 上生成 UUID

在我的 iOS Swift 应用程序中,我想生成随机 UUID (GUID) 字符串以用作表键,并且此代码段似乎有效:

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

这安全吗?

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

您也可以使用 let uuid = NSUUID.UUID().UUIDString
请接受其中一个答案,而不是您的编辑。既然您按照@AhemdAlHafoudh 提议的方式进行操作,我建议您接受他的回答。
啊,明白了。谢谢……完成了。

T
Tilak Maddy

试试这个:

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

斯威夫特 3/4/5

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

在 XCode 6.1 中,我发现了这个错误:'UUID()' is unvilable: use object construction 'NSUUID()'。我们应该把它改成 NSUUID().UUIDString
上面的建议与调用 NSUUID.init().UUIDString 没有什么不同,对吧?
从 Xcode 8(测试版)、iOS 10 和 Swift 3 开始,它已重命名为 UUID().uuidString
介意将此添加到答案中吗?
嗨,我使用了这种方法 UUID().uuidString 但它似乎每次使用它时都会返回不同的字符串,我希望它仅为我安装的应用程序的 1 值。有什么见解吗?
J
James Frost

您也可以只使用 NSUUID API:

let uuid = NSUUID()

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

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


C
Celil Bozkurt

对于斯威夫特 4;

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

Graveyard nitpick here,但我不知道为什么小写 UUID 比常规 UUID 更可取。
因为它们应该是小写的。根据规格。 UUID 可以在任何一种情况下读取,但应输出小写。 iOS 是唯一输出大写的平台。
UUID 以 16 为基数编写,使用数字 0-9 和字符 af。大写和小写字母没有区别。但是,RCF 4122 tools.ietf.org/html/rfc4122#section-3 要求 UUID 生成器以小写形式输出,但系统接受大写和小写的 UUID。
S
Scott H

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


S
SwiftDeveloper

您也可以在下面can使用它lowercase

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

输出

68b696d7-320b-4402-a412-d9cee10fc6a3

谢谢 !


谢谢。现在是NSUUID().uuidString.lowercased()
像这样使用小写字母有什么好处?
也许它比大写更顺眼?
好处是它应该输出小写,因为所有其他平台都根据规范输出小写。苹果做错了。
UUID 以 16 为基数编写,使用数字 0-9 和字符 af。大写和小写字母没有区别。但是,RCF 4122 tools.ietf.org/html/rfc4122#section-3 要求 UUID 生成器以小写形式输出,但系统接受大写和小写的 UUID。
i
iAleksandr

每次都会生成相同的:

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

每次都会生成一个新的:

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

那么,我应该为 GADMobileAds 使用哪一个?
A
Anton Polyakov

UUID 是一个简单的结构,它具有属性 uuidStringuuidString - 返回从 UUID 创建的字符串,例如“E621E1F8-C36C-495A-93FC-0C247A3E6E5F”。

UUID 保证是唯一的。

SWIFT代码:

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/