美文网首页
NSArray 比较相同 方法

NSArray 比较相同 方法

作者: Bc_wh1te_Le1 | 来源:发表于2016-03-28 20:33 被阅读814次

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];

}                    

相关文章

网友评论

      本文标题:NSArray 比较相同 方法

      本文链接:https://www.haomeiwen.com/subject/scnjlttx.html