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

Fat*_*tie 3 uuid ios swift

这个问题是关于Swift的。

这很容易产生在RFC UUID 斯威夫特得到一个斯威夫特String因为在这个阶段,苹果已经取得了斯威夫特方法,它...

func sfUUID()->String
    {
    return UUID().uuidString.lowercased()
    }
Run Code Online (Sandbox Code Playgroud)

使用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。

Rob*_*ier 6

Callam的链接是实际答案。Swift可以(在这种情况下必须)调用C,所以C函数的名称就是您真正需要的。

但是这里的“ Swift”问题只是如何从Swift调用C函数,这是一项通用技能,比该特定问题更重要(并且在当前文档中并没有很好地解释)。因此,值得研究以下内容的工作方式,而不仅仅是将其作为“如何在Swift中生成v1 UUID”的答案。

var uuid: uuid_t = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
withUnsafeMutablePointer(to: &uuid) {
    $0.withMemoryRebound(to: UInt8.self, capacity: 16) {
        uuid_generate_time($0)
    }
}

let finalUUID = UUID(uuid: uuid)
Run Code Online (Sandbox Code Playgroud)