在这个项目中出现"添加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 > ) { 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!!!

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

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

    package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...

  2. C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,

    //将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...

  3. 从给数组中的对象去重看Javascript中的reduce()

    假设有这样一个数组: let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name ...

  4. 小姐姐手把手教你JS数组中的对象去重

    有时候数据库中的数据重复的,我们另一个需求需要数据的唯一性 那么这时候就用到这个方法了  我还是以截图的方式发粗来  不然太丑了 见谅 console.log(map)打印出来的结果已经帮我们把需要的 ...

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

    int[]x=new int [50]; char[][]y=new char[10][10]; int j=1,w=0; for(int i=0;i<50;i++) { x[i]=j; j+= ...

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

    package liu0915; import java.util.Random; public class Test0915sz { public static void main(String[] ...

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

    分析:取余,判断个位是否相等,利用冒泡法排序 #include <stdio.h> int main() { ] = { ,,,,,,,,, };/*数组*/ int i, j, k; ; ...

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

    //分类 package com.bao; public class Shuchu { int[]yi=new int[50]; String[][]er=new String[10][10]; vo ...

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

    public class ClassArrayDemo { int age; String name; ClassArrayDemo(int age, String name) { this.age ...

随机推荐

  1. ICPC2019徐州站游记

    day0 出师不利 差两分钟没赶上高铁回去我一定每天都到下边玩跑步 改签成卧铺,原来3点发7点到现在11点发9点到 本来计划火车上3个人练习一场,晚上宾馆还可以cf 结果全泡汤了,在火车站浪了一晚上 ...

  2. 这个是自定义的代码块在xcode中的路径

    ~/Library/Developer/Xcode/UserData/CodeSnippets

  3. shell实现并发控制

    需求:并发检测1000台web服务器状态(或者并发为1000台web服务器分发文件等)如何用shell实现?                                              ...

  4. BZOJ3073 [Pa2011]Journeys[最短路—线段树优化建边]

    新技能get✔. 线段树优化建边主要是针对一类连续区间和连续区间之间建边的题,建边非常的优秀.. 这题中,每次要求$[l1,r1]$每一点向$[l2,r2]$每一点建无向边,然后单元最短路. 暴力建边 ...

  5. service worker在移动端H5项目的应用

    1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...

  6. Java中的集合Collection、Iterator和Foreach用法(一)

    1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...

  7. 【vue】@click绑定的函数,如何同时传入事件对象和自定义参数

    知识很久不用的话,果然是容易忘的... 记记笔记,希望能加深点印象吧. [仅仅传入事件对象] html: <div id="app"> <button @clic ...

  8. 使用Future、asyncio处理并发

    并发的意义 为了高效处理网络I/O,需要使用并发,因为网络有很高的延迟,所以为了不浪费CPU周期去等待,最好在收到网络响应之前做些其他的事. 在I/O密集型应用中,如果代码写得正确,那么不管是用哪种并 ...

  9. istio 安装与bookinfo示例运行

    目的 本文旨在帮助想了解istio安装和运行bookinfo示例的同学快速入门 前置准备 安装k8s和helm 1.k8s安装 修改主机名 hostnamectl set-hostname k8s-m ...

  10. DP基础(线性DP)总结

    DP基础(线性DP)总结 前言:虽然确实有点基础......但凡事得脚踏实地地做,基础不牢,地动山摇,,,嗯! LIS(最长上升子序列) dp方程:dp[i]=max{dp[j]+1,a[j]< ...