gpt4 book ai didi

iphone - 使用 CFUUIDRefs 作为字典的键

转载 作者:行者123 更新时间:2023-12-03 16:29:06 24 4
gpt4 key购买 nike

我有很多设备。它们每个都有一个 UUID 来区分彼此。从逻辑上讲,在字典中键入它们来跟踪它们是很自然的事情。

但是,[设备 UUID] 方法会传回 CFUUIDRef。

首先,这不是一个对象。但是,嘿,我们可以解决这个问题。[device_dictionary setObject:设备 key (__bridge id)[设备uuid]];

不,等等,这不是一个有效的 key :它没有实现 协议(protocol)。

此外,由于我将这些 CFUUIDRef 即时转换为对象,字典是否会意识到它已被传递两次相同的 CFUUIDRef?或者通过强制转换动态创建的新对象不会注册为同一个对象吗?

愿意帮我集思广益吗?当 UUID 作为非对象可用时,您将如何使用 UUID 为字典设置键?

最佳答案

显而易见的解决方案是将返回的 CFUUIDRef 转换为字符串以用作字典中的键。

您可以使用 CFUUIDCreateString()CFUUIDRef 转换为 CFStringRef,如下所示:

CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, [device uuid]);

然后,您可以使用免费桥接将 CFStringRef 转换为 NSString 以在 NSDictionary 中使用。

如果您需要将 UUID 的字符串表示形式转换回 CFUUIDRef,您可以使用 CFUUIDCreateFromString(),如下所示:

CFUUIDRef uuid = CFUUIDCreateFromString(kCFAllocatorDefault, uuidString);

还有一个 CFUUIDRef 的包装器,它实现了 NSCoding,可以在 https://gist.github.com/294023 找到。 。但是,这似乎与 ARC 不兼容。

关于iphone - 使用 CFUUIDRefs 作为字典的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com