数组中存放model去重

在这个项目中出现"添加model数据"数组重复的状况,这就涉及到数组去重的问题了......数组

1.服务器

一开始使用的最笨的方法: 依次循环两个数组(原有的数组,选择的数组),双重for循环判断model.code是否相等,不相等才存放到数组中,在这里,多是本身循环有问题,一直出现的是数组中添加了不少的重复数据,全部,去重失败.spa

 

2.接着第一种方法,而后双重for循环,将不相等model存放到数组,再利用NSMutableSet对数组去重,成功实现.code

  NSSet *set = [NSSet setWithArray:dataArray];blog

  NSLog(@"%@",[set allObjects]);  string

3.最后用了一个最方便,易懂的...嘿嘿.....固然就是字典啦!!!!it

#pragma mark - 接收添加资产记录通知

- (void)receiveModel: (NSNotification *)notification{
    
    NSLog(@"接收通知");
    NSArray *selectArray = notification.userInfo[@"selectassertArray"];
    if (isNilOrNull((self.detailModel.givenassetslist))) {
        NSArray *givassetArray = [NSArray array];
        self.detailModel.givenassetslist = [givassetArray mutableCopy];
    }
    for (GivenassetslistModel *model in selectArray) {
        
        [self.detailModel.givenassetslist addObject:model];
    }
    // 字典去重 <注意: 未刷新的数据依旧添加>
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    
    if (self.detailModel.givenassetslist.count > 0) {
        
        for (GivenassetslistModel *model in self.detailModel.givenassetslist) {
            
            [dic setObject:model forKey:model.code];
        }
    }
    self.detailModel.givenassetslist = [[dic allValues] mutableCopy];
    [self.tableView reloadData];
}

 

在这里,真的得好好批评本身:io

1. 处理问题,实现功能太不考虑全面了,致使这种状况能够实现功能,出现另一种状况就不能够了;for循环

例如: 服务器返回数组数据是nil......传递给" 选择 "控制器,   傻傻傻!!!   往nil数组中添加再多的model数据都没用啊....table

2. 传递已经选择的数据过来,"选择页面"是能够上拉加载的...你都还没上拉加载,数组中都没值,确定添加不进去啊,致使数据错乱了!!!

因此添加选择的数据应该在传过来的已经选择的数组中添加.......对应重复的数据,只能再去重咯!!!

 

如今终于知道" 经验 "的这个问题了,由于踩得坑越多,经验越足,考虑问题的能力也会愈来愈全面!!!

最近状态有点不对,有点迷茫.....调整调整哟...加油加油!!!

fighting!!!   fighting!!!   fighting!!! 

相关文章
相关标签/搜索