NSArray 比较相同 方法

tips:不想看研究过程的直接拉到最下面。

 项目中遇到 比较数组是否相同的方法 解决后在此做一总结 

数组比较相同 首先很多同学会想到遍历的方法 但是是不是会有点太费了

要遍历  还要一个个比较  太坑了 不能接受  我就在想有没有什么比较

代价小且方便的方法呢  

下面就来了  

1 -  1 

有没有一行代码就能解决问题的方法呢。 这就来了。

NSArray *array1 = @[@"i",@"o",@"s"];

NSArray *array2 = @[@"i",@"o",@"s"];

if ([array1 isEqualToArray:array2]) {

NSLog(@"BHT isEqualToArray work");

}

看来 cocoa框架确实强大 只要你想到的就有  于是屁颠颠 把这样的代码加到工程 

过两天 bug来了  说 你这个怎么判断不同啊  明明相同啊  我说怎么会 

不要质疑一个 虽然是新手的iOS开发菜鸟的代码 

可当我调试起来 才发现 真的打脸了  

仔细看 才发现原来 数组虽然每个元素都相同 但是 顺序却不同 

怎么解决呢  这就告诉你 

2 - 2 转换成 NSSet 

NSArray *array1 = @[@"i",@"o",@"s"];

NSArray *array2 = @[@"i",@"s",@"o"];

NSSet *set1 = [NSSet setWithArray:array1];

NSSet *set2 = [NSSet setWithArray:array2];

if ([set1 isEqualToSet:set2]) {

NSLog(@"BHT isEqualToSet work");

}

果断成功。~ 


总结验证下  



看了 log  果断成功 不管顺序怎么变  转换成set 都可以解决问题



自取方法 


1.对比较连顺序也有要求的请用

- (BOOL)compareArr:(NSArray *)array1 With:(NSArray *)array2{

return  [array1 isEqualToArray:array2];

}                           

2.对比较连顺序无要求 只需比较是否相同的请用

- (BOOL)compareArr:(NSArray *)array1 With:(NSArray *)array2{

NSSet *setOld = [NSSet setWithArray:array1];

NSSet *setNew = [NSSet setWithArray:array2];

return [setOld isEqualToSet:setNew];

}                    

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容