比较两个NSUUIDs
的最佳(最少代码,最快,最可靠)方法是什么?
以下是一个例子:
-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
return ... // YES if same or NO if not same
}
答案 0 :(得分:8)
来自NSUUID类引用:
注意:NSUUID类与CoreFoundation没有免费桥接 CFUUIDRef。如果使用UUID字符串在CFUUID和NSUUID之间进行转换 需要。两个NSUUID对象不能保证可比较 指针值(如CFUUIDRef所示);使用isEqual:比较两个NSUUID 实例
所以请使用以下内容:
-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
return [uuid1 isEqual:uuid2];
}
答案 1 :(得分:7)
您不需要为此创建额外的方法,因为documentation表示
NSUUID对象不能保证与指针值相当 (如CFUUIDRef所示); use isEqual:比较两个NSUUID实例。
所以只需BOOL sameUUID = [uuid1 isEqual:uuid2];
答案 2 :(得分:2)
NSUUID有效地包装了uuid_t。
...解
MyEntityMapLoader implements ApplicationContextAware, MapLoader<MyEntityMapLoader.CompositeKey, List<BigInteger>> {
@Inject
HazelcastInstance hazelcastInstance;
@Inject
MyEntityRepository myRepo;
@PostConstruct
public void initialize() {
//initialize map
}
@Override
@Transactional
public Map<CompositeKey, List<BigInteger>> loadAll(Collection<CompositeKey> keys) {
return buildMap(getAll());
}
答案 3 :(得分:0)
实现此目的的一种合理简单方法是使用字符串比较。但是,使用基础CFUUIDRef
的方法可能会更快。
-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
return [[uuid1 UUIDString] isEqualToString:[uuid2 UUIDString]];
}