数组中存放model去重

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

1.

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

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

NSSet *set = [NSSet setWithArray:dataArray];

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

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

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

在这里,真的得好好批评自己:

1. 处理问题,实现功能太不考虑全面了,导致这种情况可以实现功能,出现另外一种情况就不可以了;

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

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

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

现在终于知道" 经验 "的这个问题了,因为踩得坑越多,经验越足,考虑问题的能力也会越来越全面!!!

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

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

时间: 2024-08-25 19:34:14

数组中存放model去重的相关文章

在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行

package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) { //在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行 int [] x=new int[50]; int a =1; for(int i=0;i<50;i++) { x[i]=a; a+=2; } for(

按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

package com.homework.zw; public class work3 { public static void main(String[] args) {//定义数组x和y的类型 int[] x=new int[50]; char[][] y=new char[10][10]; int j =1; int n =0; //定义数组x的每一个元素 for(int i=0;i<50;i++) { x[i]=j; j=j+2; } System.out.println("一维数

编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

package liu0915; import java.util.Random; public class Test0915sz { public static void main(String[] args) { int[] x=new int[50]; int j=1; for(int i=0;i<50;i++) { x[i]=j; j=j+2; } System.out.println("一维数组是:"); int n=0; for (int a=1;a<=5;a+

【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果

分析:取余,判断个位是否相等,利用冒泡法排序 #include <stdio.h> int main() { int a[10] = { 11,22,33,44,15,20,17,30,10,23 };/*数组*/ int i, j, k; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if (a[j] % 10 < a[j + 1] % 10 || a[j] % 10 == a[j + 1] % 10)/*冒泡算法+个位是否相等*/ { k = a

怎么对数组中的对象去重?

var arr = [{ "name": "ZYTX", "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix", "gender": "AAAAAA.doc" }, { "name": "ZYTA", "age": "Y13x

数组中存放对象之java中定义类数组存放类

public class ClassArrayDemo { int age; String name; ClassArrayDemo(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "[" + name + "," + age + "]"; } public static void mai

解析plist文件(字典里包着数组,数组中又包含字典)

1 #import "RootTableViewController.h" 2 #import "City.h" 3 4 @interface RootTableViewController () 5 6 // 声明存放所有城市的大字典 7 @property (nonatomic, strong) NSMutableDictionary *allDataDict; 8 9 // 存储所有的key数组(存放省份) 10 @property (nonatomic, s

六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! + 3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀

/* 设计一个函数,用来计算b的n次方 递归的2个条件: 1.函数自己调用自己 2.必须有个明确的返回值 */ #include <stdio.h> int pow2(int b, int n); int main() { int c = pow2(3, 2); printf("%d\n", c); return 0; } /* pow2(b, 0) == 1 pow2(b, 1) == b == pow2(b, 0) * b pow2(b, 2) == b*b == po

c语言:将数组中n个整数按相反顺序存放。

将数组中n个整数按相反顺序存放. 解:程序1: #include<stdio.h> int inv(int x[], int n) { int temp, i, j, m = (n - 1) / 2; for (i = 0; i <= m; i++) { j = n - 1 - i; temp = x[i]; x[i] = x[j]; x[j] = temp; } return; } int main() { int i, a[10] = { 1,2,3,4,5,6,7,8,9,10 }