數組中存放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!!! 

相關文章
相關標籤/搜索