//

数据下载得到数组数据

 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. final、static、代码块、静态代码块、内部类、代码执行顺序

    final final域使得确保初始化安全性(initialization safety)成为可能,初始化安全性让不可变形对象不需要同步就能自由地被访问和共享 作用在类上               ...

  2. Java提高十七:TreeSet 深入分析

    前一篇我们分析了TreeMap,接下来我们分析TreeSet,比较有意思的地方是,似乎有Map和Set的地方,Set几乎都成了Map的一个马甲.此话怎讲呢?在前面一篇讨论HashMap和HashSet ...

  3. SpringMVC中遇到页面跳转出现404错误的问题

    今天遇到了一个问题: 使用SpringMVC时,出现页面无法跳转的情况(404错误), 出现这个异常的原因在于SpringMVC的配置文件中控制器的配置书写错误: 原代码: <context:c ...

  4. Pyhton函数篇(一)之函数中的形参与实参

    1:什么是函数 函数其实就是带名字的代码块,用于完成一些具体的工作.如果我们在写一段程序的时候,需要多次用到同样的一个功能,如果每次都要重复写相同的代码,不仅会增加我们的代码量,更会让我们写出的代码让 ...

  5. 在.NET Core类库中使用EF Core迁移数据库到SQL Server

    前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合 ...

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

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

  7. java多线程编程核心技术——第二章

    第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synchronized方法与锁对象 1.5脏读 1.6synchro ...

  8. webpack安装配置

    webpack安装 1.安装之前你必须要安装node.js,如果你没安装可以在node.js网去下载node.js 2.全局安装webpack,打开cmd输入npm install webpack - ...

  9. Python入门经典 以解决计算问题为导向的Python编程 待完好

    1.4.2:python将代码分为两类:表达式和语句  表达式和语句::  表达式(值和运算符的结合,将产生新值--返回值. 假设在python shell中输入表达式将显示返回值.也就是说,假设x的 ...

  10. NYOJ15-括号匹配(二)-区间DP

    pid=15">http://acm.nyist.net/JudgeOnline/problem.php? pid=15 dp[i][j]表示从i到j至少须要加入多少个括号才干满足匹配 ...