Nano ID
另一个 Nano ID 的 Swift 实现。它大量借鉴了 https://github.com/antiflasher/NanoID,该实现似乎已被废弃。
用法
// Create an ID generator using the default alphabet, size, and randomizer
let id = ID()
// Generate a 21 character id (21 is the default size)
id.generate()
// Generate a 10 character id
id.generate(size: 10)
// Generate a 5 character id containing only numeric characters
id.generate(alphabet: .numeric, size: 5)
// Generate a 5 character id containing only symbols
id.generate(alphabet: .symbols, size: 5)
// Generate a secure 10 character id
id.generate(size: 5, randomizer: ID.Randomizers.secure)
随机数生成器
提供了两种实现:`Secure` 和 `ARC4Random`(别名为 `Insecure`)。`Secure` 实现使用 `CryptoKit` 进行随机化。如果这些无法满足您的需求,您可以提供自己的 `RandomizerProtocol` 实现。
字符集
包含几个字符集:`numeric`、`alphaLower`、`alphaUpper`、`alphaNumeric`、`symbols`、`urlSafe` 和 `full`。您可以轻松创建其他字符集,只需将一个或多个字符串初始化到 `Alphabet` 结构中。
自定义字符集示例
extension ID.Alphabet {
public static var abc123 = Self(.abc123)
}
extension String {
internal static var abc123 = "abc123"
}