如何比较NSUUID

时间:2013-12-11 17:23:10

标签: ios objective-c ios7 uuid nsuuid

比较两个NSUUIDs的最佳(最少代码,最快,最可靠)方法是什么?

以下是一个例子:

-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
    return ... // YES if same or NO if not same
}

4 个答案:

答案 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]];
}