这个问题是关于Swift的。
在Swift中生成一个rfc UUID很容易就可以得到一个Swift,String
因为在这个阶段苹果已经为它制作了Swift方法。
func sfUUID()->String
{
return UUID().uuidString.lowercased()
}
使用Swift时,我需要一个老式的“版本1” UUID
(示例:https : //en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_.28date-time_and_MAC_address.29)
在Swift3中有没有办法做到这一点?(仅> 9)
在Swift中,如何获取版本1 UUID。因此,可能有一些我不知道的选择UUID()
,或者存在调用C调用并将结果安全地作为的困难String
。
我会删除答案,但已将其打勾!
Swift代码进入C调用...
func generateVersionOneAkaTimeBasedUUID() -> String {
// figure out the sizes
let uuidSize = MemoryLayout<uuid_t>.size
let uuidStringSize = MemoryLayout<uuid_string_t>.size
// get some ram
let uuidPointer = UnsafeMutablePointer<UInt8>.allocate(capacity: uuidSize)
let uuidStringPointer = UnsafeMutablePointer<Int8>.allocate(capacity: uuidStringSize)
// do the work in C
uuid_generate_time(uuidPointer)
uuid_unparse(uuidPointer, uuidStringPointer)
// make a Swift string while we still have the C stuff
let uuidString = NSString(utf8String: uuidStringPointer) as? String
// avoid leaks
uuidPointer.deallocate(capacity: uuidSize)
uuidStringPointer.deallocate(capacity: uuidStringSize)
assert(uuidString != nil, "uuid (V1 style) failed")
return uuidString ?? ""
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句