数组中存放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 > ) { 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去重的更多相关文章
- 在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行
package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...
- C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,
//将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...
- 从给数组中的对象去重看Javascript中的reduce()
假设有这样一个数组: let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name ...
- 小姐姐手把手教你JS数组中的对象去重
有时候数据库中的数据重复的,我们另一个需求需要数据的唯一性 那么这时候就用到这个方法了 我还是以截图的方式发粗来 不然太丑了 见谅 console.log(map)打印出来的结果已经帮我们把需要的 ...
- 按要求编写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+= ...
- 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
package liu0915; import java.util.Random; public class Test0915sz { public static void main(String[] ...
- 【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果
分析:取余,判断个位是否相等,利用冒泡法排序 #include <stdio.h> int main() { ] = { ,,,,,,,,, };/*数组*/ int i, j, k; ; ...
- 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 ...
- 数组中存放对象之java中定义类数组存放类
public class ClassArrayDemo { int age; String name; ClassArrayDemo(int age, String name) { this.age ...
随机推荐
- mybatis的配置文件详解(二)
一.properties 这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递.例如 1) <?xml versio ...
- queue的一些用法
import queue q = queue.Queue(3)# 指定队列大小,如果为空则为无限大 print(q.empty()) q.put('厉智') q.put('程劲') q.put('陈培 ...
- C# 通过Process.Start() 打开程序 置顶方法
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { try { foreach ...
- 【Android-自定义控件】 漂亮的Toast
修改Toast属性,美化Toast //创建一个Toast Toast toast=new Toast(getApplicationContext()); //创建Toast中的文字 TextView ...
- D. Shortest Cycle(floyd最小环)
D. Shortest Cycle time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- [笔记]C++拷贝构造和移动构造
一.拷贝构造 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都没有默认值,则此构造函数是拷贝构造函数.(<C++Primer,第五版>) class Foo { publi ...
- 如何让spark sql写mysql的时候支持update操作
如何让sparkSQL在对接mysql的时候,除了支持:Append.Overwrite.ErrorIfExists.Ignore:还要在支持update操作 1.首先了解背景 spark提供了一个枚 ...
- Android学习——MediaProvider与Music模块
一.MediaProvider数据库介绍 1. 关系型数据库 关系模型的物理表示是一个二维表格,由行和列组成. 2. MediaProvider数据库存储位置 /data/data/com.a ...
- python获取hive表时间格式最大分区
#获取表的最大分区 import boto3 from datetime import datetime,timedelta def get_max_partition(db_name,table_n ...
- 如何选CDN:互联网大直播时代的CDN选择指南
转: 如何选CDN:互联网大直播时代的CDN选择指南 from: http://www.chnvideo.com/blog-classic-cdn.html SRS 编码器 如何选CDN:互联网 ...