Ios 从名称空间生成UUID?

Ios 从名称空间生成UUID?,ios,swift,uuid,Ios,Swift,Uuid,正在尝试基于2个唯一字符串生成客户端Id。 这应该是在服务器中从相同的ID生成的相同UUID 使用Javascript时,它看起来像这样: uuidv5(id1 + id2 , uuidv5.DNS); NSUUID(namespace: id1 + id2).uuidString 似乎找不到在Swift上生成此信息的方法,NSUID只能从无到有地生成UUID NSUUID().uuidString 我在找这样的东西: uuidv5(id1 + id2 , uuidv5.DNS); NS

正在尝试基于2个唯一字符串生成客户端Id。 这应该是在服务器中从相同的ID生成的相同UUID

使用Javascript时,它看起来像这样:

uuidv5(id1 + id2 , uuidv5.DNS);
NSUUID(namespace: id1 + id2).uuidString
似乎找不到在Swift上生成此信息的方法,NSUID只能从无到有地生成UUID

NSUUID().uuidString
我在找这样的东西:

uuidv5(id1 + id2 , uuidv5.DNS);
NSUUID(namespace: id1 + id2).uuidString
编辑

例如:

let sorted = ["5a23dbfb2626b400190998fc", "5pCAvA7h8k9JuErRn"]
let appended = sorted.seperaredStringBy("-")
let result = uuidv5(appended , uuidv5.DNS)

//results:
2522b097-8532-548e-a18b-9366c6511b5e

快速标准库或基础框架没有我所知道的版本5 UUID的内置方法。 以下是版本3和版本5 UUID的可能实现,摘自中的描述和中的参考实现

(针对Swift 4及更高版本进行了更新。)

示例2(来自RFC 4122中的附录B,如中所更正):


objc版本,以防有人需要

+(CBUUID*)UUIDWithNamespace:(NSString*)命名空间名称:(NSString*)名称版本:(int)版本
{

if(namespace.length)有
initWithUUIDString:
initWithUUIDBytes:
方法。现在的问题是
uuidv5(id1+id2,uuidv5.DNS)
到底是什么?请注意,在Swift 3+中,您应该使用
UUID
而不是
nsuid
,它们提供相同的方法(
init(uuidString:)
)@谢谢您的快速响应。据我所知,initWithUUID将从UUID字符串生成UUID对象。我正在寻找一种附加2个字符串(而不是UUID)的方法然后从结果创建一个UUID,这将是唯一的。无论是什么时候生成的,都将从同一个Id保持不变。至少您应该添加一个添加字符串的示例和从中生成UUID的输出…以便能够比较它。您可以自己计算sha1字节。您太棒了。谢谢。var data=使用unSeavePoto(to:StuluID){DATA(字节:0美元,计数:MethyDealth.Stand(OfValue:SuthEuID)}),我得到了“空格”的“重叠访问”,但修改需要独占访问;考虑复制到带有“不安全指针”的局部变量。此部分出错。因此将其更改为var data=withUnsafePointer(指向:&spaceUID,{[s=spaceUID]b作为返回数据(字节:b,计数:MemoryLayout.size(of值:s)))@User18474728:你是对的,这是的。我已经更新了代码来修复这个问题,还有另一个警告。谢谢你让我知道。嗨,有objc版本吗。
let uuid = UUID(version: .v3, name: "www.widgets.com", nameSpace: .dns)
print(uuid) //3D813CBB-47FB-32BA-91DF-831E1593AC29