Swift3中的UUID,但使用“版本1”样式的UUID

胖子

这个问题是关于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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章