美文网首页
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