//

数据下载得到数组数据

 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 数据处理,数据分类相同数据整合、合并计算总数总价的更多相关文章

  1. IOS tableView的数据刷新

    1.tableView的刷新 1> 数据刷新的总体步骤 * 修改模型数据 * 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法 * 全局刷新(每一行都会重新刷新) - (void)r ...

  2. iOS:控制器间的数据传递

    在iOS开发中遇到的控制器间的数据传递主要有两种情况:顺传递与逆传递.顺传递是指数据的传递方向和控制器的跳转方向相同(如图1):逆传递是指数据的传递方向和控制器的跳转方向相反(如图2).这里分别介绍这 ...

  3. 用IBM WebSphere DataStage进行数据整合: 第 1 部分

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...

  4. iOS中GET 和 POST 数据请求

    iOS中GET 和 POST 网络数据请求 同步请求和异步请求的差别: 1.同步请求,有主线程完成网路请求任务,在数据没有请求之前,用户的所有的交互事件应用都无法处理,会造成一种卡顿现象,影响用户体验 ...

  5. iOS TableView多级列表

    代码地址如下:http://www.demodashi.com/demo/15006.html 效果预览 ### 一.需求 TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设 ...

  6. 用IBM WebSphere DataStage进行数据整合: 第 1 部分 分类: H2_ORACLE 2013-08-23 11:20 688人阅读 评论(0) 收藏

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...

  7. iOS tableview的常用delegate和dataSource执行顺序

    在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久...... 对在7系统上不显示的猜测: 用mas ...

  8. PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  9. iOS 直播-获取音频(视频)数据

    iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...

随机推荐

  1. spring aop使用

    最近做一个数据库分离的功能,其中用到了spring aop,主要思路就是在service层的方法执行前根据注解(当然也可以根据方法名称,如果方法名称写的比较统一的话)来判断具体使用哪个库.所以想着再回 ...

  2. 使用Javascript获取当前目录的绝对路径

    转自http://heeroluo.net/Article/Detail/101 一谈到路径相关的问题,大家都会往window.location上想,确实这个对象提供了相当多的路径信息,其中常用的就包 ...

  3. JAVAFX-4 开发应用

    JavaFx 形状 Node类是所有JavaFX场景图形节点的基本基类.它提供了转换和应用效果到任何节点的能力. javafx.scene.shape.Shape类是Node类的子类.所有较旧的Jav ...

  4. iOS面试题最全梳理

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...

  5. SaltStack 部署案例 02

    远程执行 salt '*' state.sls apache '*':代表所有主机 state.sls :是一个模块 apache : 状态 ,表示需要部署的内容,后缀.sls YAML:三板斧 1. ...

  6. SSL/TLS 握手过程详解

    在现代社会,互联网已经渗透到人们日常生活的方方面面,娱乐.经济.社会关系等都离不开互联网的帮助.在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的.幸运的是,在大牛 ...

  7. gitlab一键安装+配置(备份+LADP认证)

    gitlab一键安装+配置(备份+LADP认证) #gitlab一键安装 #centos6 mini, GitLab社区版 #参考官方最新文档 https://www.gitlab.com.cn/in ...

  8. Ubuntu TensorFlow 源码 Android Demo的编译运行

    Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...

  9. velocity 是如何实现内省 屏蔽反射的

    velocity的标签中支持$abc 这样的语法,如果abc是一个对象,则写模板时就可以利用它来进行反射,调用一些危险的方法,如 $vm.getClass().newInstance() #set ( ...

  10. VS2015 密钥key

    亲测可用: HMGNV-WCYXV-X7G9W-YCX63-B98R2