iOS tableView 数据处理,数据分类相同数据整合、合并计算总数总价
//
数据下载得到数组数据
modelArray = [MZPriceModel mj_objectArrayWithKeyValuesArray:data[@"info"]];
if (modelArray.count>) {
// 分类的数组
sectionArray = [self distinguishArrayWithArray:modelArray];
//计算合计总价
for (MZPriceModel *mzmodel in modelArray) {
allValue +=mzmodel.total_fee.floatValue;
}
//再次进行分类得到同一类相加价格相同数据显示一条,后的数据整理
SameArray = [self TwodistinguishArrayWithArray:sectionArray];
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self setUI];
});
// 分类的数组
-(NSMutableArray *)distinguishArrayWithArray:(NSArray *)array
{ //初始化一个空数组 用于return
NSMutableArray * arrayAll = [[NSMutableArray alloc]init]; //找到所有要对比的数据
NSMutableArray * mutableArrayKey = [[NSMutableArray alloc]init]; for (int i=; i<array.count; i++)
{ MZPriceModel * model = [array objectAtIndex:i]; if (model.accounting_type == nil&&[model.accounting_type isEqualToString:@""]) {
model.accounting_type = @"";
}
[mutableArrayKey addObject:model.accounting_type];
} //过滤所有重复的数据
NSArray * indexArray = [NSArray arrayWithArray:mutableArrayKey];
NSSet * set = [NSSet setWithArray:indexArray];
indexArray = [set allObjects];
//排序
indexArray = [indexArray sortedArrayUsingSelector:@selector(compare:)]; for (int i=; i<indexArray.count; i++)
{
//把每个不重复的数据当做一类数据
NSMutableArray * muatbleArray = [[NSMutableArray alloc]init]; //把原始数据分别归类
for (int a=; a<array.count; a++)
{
MZPriceModel * model = [array objectAtIndex:a]; if ([model.accounting_type isEqualToString:[indexArray objectAtIndex:i]])
{
[muatbleArray addObject:model];
}
} //获取所有归类过的数据
[arrayAll addObject:muatbleArray];
}
return arrayAll;
}
//同类中整理数据
-(NSArray *)TwodistinguishArrayWithArray:(NSArray *)arrayOld
{
NSMutableArray * arrarAll = [[NSMutableArray alloc]init];
//初始化一个空数组 用于return
//把每个重复的数据当做一类数据 for( int k=;k<arrayOld.count;k++)
{
NSMutableArray * array2 =[NSMutableArray array]; NSMutableArray * array = [NSMutableArray array];
//同一类的
array =arrayOld[k]; //得到相同类目的数组
for (int i=; i<array.count-; i++)
{
// 把原始数据分别归类
for (int a=+i; a<array.count; a++)
{ MZPriceModel * modeli = [array objectAtIndex:i];
MZPriceModel * modela = [array objectAtIndex:a]; if (modeli.name==nil||[modeli.name isEqualToString:@""]) { }else{
if ([modela.name isEqualToString:modeli.name] && [modela.price isEqualToString:modeli.price])
{
// NSArray *contentList = @[model.name,model.quantity,model.price,[NSString stringWithFormat:@"%0.2f",model.total_fee.floatValue]]; NSString* quani = modeli.quantity;
NSString* quana = modela.quantity;
NSString *danjia = modela.price;
int zongliang =quana.intValue+quani.intValue; modeli.quantity =[NSString stringWithFormat:@"%d",zongliang];
modeli.total_fee =[NSString stringWithFormat:@"%0.1f",danjia.floatValue*zongliang]; [array removeObjectAtIndex:a];
MZPriceModel * kong =[[MZPriceModel alloc]init];
[array insertObject:kong atIndex:a]; } }
} } for (MZPriceModel * mo in array) { if (mo.name) {
[array2 addObject:mo];
} } [arrarAll addObject:array2]; }
return arrarAll;
}
iOS tableView 数据处理,数据分类相同数据整合、合并计算总数总价的更多相关文章
- IOS tableView的数据刷新
1.tableView的刷新 1> 数据刷新的总体步骤 * 修改模型数据 * 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法 * 全局刷新(每一行都会重新刷新) - (void)r ...
- iOS:控制器间的数据传递
在iOS开发中遇到的控制器间的数据传递主要有两种情况:顺传递与逆传递.顺传递是指数据的传递方向和控制器的跳转方向相同(如图1):逆传递是指数据的传递方向和控制器的跳转方向相反(如图2).这里分别介绍这 ...
- 用IBM WebSphere DataStage进行数据整合: 第 1 部分
转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...
- iOS中GET 和 POST 数据请求
iOS中GET 和 POST 网络数据请求 同步请求和异步请求的差别: 1.同步请求,有主线程完成网路请求任务,在数据没有请求之前,用户的所有的交互事件应用都无法处理,会造成一种卡顿现象,影响用户体验 ...
- iOS TableView多级列表
代码地址如下:http://www.demodashi.com/demo/15006.html 效果预览 ### 一.需求 TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设 ...
- 用IBM WebSphere DataStage进行数据整合: 第 1 部分 分类: H2_ORACLE 2013-08-23 11:20 688人阅读 评论(0) 收藏
转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...
- iOS tableview的常用delegate和dataSource执行顺序
在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久...... 对在7系统上不显示的猜测: 用mas ...
- PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)
说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...
- iOS 直播-获取音频(视频)数据
iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...
随机推荐
- mybatis逆向工程之配置
逆向工程1.什么是逆向工程mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml. ...
- VueJS使用笔记
html: <script src='vue.js'></script> <div id='app'> <span>{{msg}}</span&g ...
- 在使用hibernate的getHibernateTemplate()时怎么让控制台输出封装好的SQL? 怎么用日志打印出来?
我们在使用 Hibernate 时一般只会关注是否显示生成的 SQL 语句,不过有些时候还不够.默认时 Hibernate 执行的 SQL 语句是打印在控制台上的,它也可以配置为输出给 Log4J 或 ...
- SpringMVC中遇到页面跳转出现404错误的问题
今天遇到了一个问题: 使用SpringMVC时,出现页面无法跳转的情况(404错误), 出现这个异常的原因在于SpringMVC的配置文件中控制器的配置书写错误: 原代码: <context:c ...
- memcached一致性哈希及php客户端实现
1.memcached分布式算法 memcached的分布式是依靠客户端的算法来实现,假设键名为$key,服务器数量为N,常规的实现方式有两种: 取模哈希 crc32($key)%N,通过这个算法将键 ...
- 机器学习实验一SVM分类实验
一.实验目的和内容 (一)实验目的 1.熟悉支持向量机SVM(Support Vector Machine)模型分类算法的使用. 2.用svm-train中提供的代码框架(填入SVM分类器代码)用tr ...
- 简单模板view调用
$this->display();//模板名称与当前控制器.当前操作方法的名称不一致 $this->display();//调用当前控制器对应目录指定名称的模板 $this->dis ...
- win下搭建python3+PyQt5+eric6环境
一.安装python3 1.下载python3的安装包,默认安装即可,注意勾选 Add Python 3.6 to Path .但是这样默认安装的路径太长,不太方便找到,可选择定制安装,自己定义安装路 ...
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- js脚本根据身份证号获取性别、年龄、家庭地址、生日
做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个