首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较NSUUID

如何比较NSUUID
EN

Stack Overflow用户
提问于 2013-12-11 17:23:10
回答 4查看 6K关注 0票数 8

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

下面是一个示例:

代码语言:javascript
复制
-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
    return ... // YES if same or NO if not same
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-11 17:31:12

来自NSUUID类引用:

注意: NSUUID类与CoreFoundation的CFUUIDRef不是免费桥接的.如果需要,使用UUID字符串在CFUUID和NSUUID之间进行转换。两个NSUUID对象不能通过指针值进行比较(如CFUUIDRef );请使用isEqual:比较两个NSUUID实例。

因此,只需使用以下内容:

代码语言:javascript
复制
-(BOOL)isUUID:(NSUUID*)uuid1 equalToUUID:(NSUUID*)uuid2
{
    return [uuid1 isEqual:uuid2];
}
票数 12
EN

Stack Overflow用户

发布于 2013-12-11 17:45:01

您不需要为此创建额外的方法,因为文档声明:

NSUUID对象不能通过指针值进行比较(如CFUUIDRef那样);请使用isEqual:来比较两个NSUUID实例。

所以BOOL sameUUID = [uuid1 isEqual:uuid2];也是

票数 8
EN

Stack Overflow用户

发布于 2017-12-29 00:03:24

NSUUID有效地包装了uuid_t。

解决办法..。

代码语言:javascript
复制
@implementation  NSUUID ( Compare )



- ( NSComparisonResult )  compare : ( NSUUID * )  that
{
   uuid_t   x;
   uuid_t   y;

   [ self  getUUIDBytes : x ];
   [ that  getUUIDBytes : y ];

   const int   r  = memcmp ( x, y, sizeof ( x ) );

   if ( r < 0 )
      return  NSOrderedAscending;
   if ( r > 0 )
      return  NSOrderedDescending;

   return  NSOrderedSame;
}



@end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20525829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档