美文网首页
oc删除数组中重复model的正确姿势

oc删除数组中重复model的正确姿势

作者: Leo_L | 来源:发表于2018-11-23 13:08 被阅读5次

    网上有很多关于这方面的算法文章我见到的最多的就是一下这种形式:

    for (NSInteger i = 0; i < self.selectedModelArray.count; i++) {
            for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) {
                AssistantModel *tempModel = self.selectedModelArray[i];
                AssistantModel *model = self.selectedModelArray[j];
                if ([tempModel.assistantId isEqualToString:model.assistantId]) {
                    [self.selectedModelArray removeObject:model];
                }
            }
        }
    

    这种方式是不对的,当你数据量足够多时,数据中间重复的model比较多,删除的比较多,self.selectedModelArray.count在减少,此时第二个for循环,的j的值就有可能等于self.selectedModelArray.count,而此时源数组还没有完全便利。
    正确的做法用改新建一个数组来存放源数组的数据,删除的时候删除新建数组里面的对象,最后得到的就是没有重复数据的数组了。

     NSMutableArray *dataArr = [NSMutableArray array];
        [dataArr addObjectsFromArray:self.selectedModelArray];
        for (NSInteger i = 0; i < self.selectedModelArray.count; i++) {
            AssistantModel *tempModel = self.selectedModelArray[i];
            for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) {
                AssistantModel *model = self.selectedModelArray[j];
                if ([tempModel.assistantId isEqualToString:model.assistantId]) {
                    [dataArr removeObject:model];
                }
            }
        }
    

    最后的dataArr就是最终数组。

    相关文章

      网友评论

          本文标题:oc删除数组中重复model的正确姿势

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