是否有一种方法可以创建类似于Swift中的YouTube in的随机唯一in?
我知道这个链接上也有类似的答案,但它们都是针对Php的。但我想要斯威夫特的东西。
我尝试过使用时间戳和UUID,但是我想要一个字母数字短键,它大约是4-10个字符,这样用户就可以很容易地与其他人进行口头共享。
谢谢。
发布于 2015-07-29 13:27:56
寻找唯一的字符串
您可以使用UUID,它们非常酷:
let uuid = NSUUID().UUIDString
print(uuid)来自文档
UUID(通用唯一标识符),也称为GUID(全局唯一标识符)或IID(接口标识符),是128位值。NSUUID创建的UUID符合RFC 4122版本4,并且使用随机字节创建。
寻找更具体的长度
试着做这样的事情:
func randomStringWithLength(len: Int) -> NSString {
let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let randomString : NSMutableString = NSMutableString(capacity: len)
for _ in 1...len{
let length = UInt32 (letters.length)
let rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.character(at: Int(rand)))
}
return randomString
}但我会保留我的答案以防其他人在寻找UUID时偶然发现
发布于 2016-03-15 20:52:08
这将允许您创建一个随机的短代码。它可以创建从十六进制一直到基础62码和不同长度的代码。
是啊。
let myCode = ShortCodeGenerator.getCode(length: 6)3 dH7t8,fdE7j1,Gl6jKd,Hv8gU3
let myBase32Code = ShortCodeGenerator.getCode(withBase: UInt32(32), length: 6)3HF75J,J67N9D,B47SO3,L9SD2N
您必须检查冗余,然后创建一个新的,如果它已经被使用。
struct ShortCodeGenerator {
private static let base62chars = [Character]("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".characters)
private static let maxBase : UInt32 = 62
static func getCode(withBase base: UInt32 = maxBase, length: Int) -> String {
var code = ""
for _ in 0..<length {
let random = Int(arc4random_uniform(min(base, maxBase)))
code.append(base62chars[random])
}
return code
}
}这个答案在创建上面的代码时很有用,并且有很好的有关每个基号和长度的唯一标识符数目的信息。。
您需要的唯一标识符的总数可以由以下公式计算:
唯一ID的BaseNumber^length =#
编辑:
发布于 2017-09-23 07:00:29
更新为swift 3:
如果要生成短的随机唯一字母数字密钥,请使用下面的代码行;
//职能定义:
func generateTransactionId(length: Int) -> String {
var result = ""
let base62chars = [Character]("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".characters)
let maxBase : UInt32 = 62
let minBase : UInt16 = 32
for _ in 0..<length {
let random = Int(arc4random_uniform(UInt32(min(minBase, UInt16(maxBase)))))
result.append(base62chars[random])
}
return result
}//函数调用:
let mTranactionId = self.generateTransactionId(length: 5) // you can change the value of length as you want
print("mTranactionId: \(mTranactionId)")Ex:结果如下: XHA7K,QTC92,MS1PT,YE2PV
//享受编码.!
https://stackoverflow.com/questions/31701326
复制相似问题