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 ...
随机推荐
- platform 收集linux/windows操作系统信息
调用python的platform模块 #!/usr/bin/evn python #_*_ coding:utf-8 -*- import platform print "######## ...
- python中print()函数的“,”与java中System.out.print()函数中的“+”
python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出 ...
- sort学习 - LeetCode #406 Queue Reconstruction by Height
用python实现多级排序,可以像C语言那样写个my_cmp,然后在sort的时候赋给参数cmp即可 但实际上,python处理cmp 是很慢的,因为每次比较都会调用my_cmp:而使用key和rev ...
- async await Task
一.使用Task 引用命名空间 using System.Threading.Tasks; 1.工厂方式 Task.Factory.StartNew(() => {Console.WriteLi ...
- 十四、Hadoop学习笔记————Zookeeper概述与基本概念
顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...
- js学习笔记<拷贝传值,引用传址和匿名函数>
拷贝传值:把一个变量的值拷贝一份,传给了另外一个变量拷贝传值中,两个变量之间没有任何联系,修改其中一个一个变量的值,原来的变量不变. 例: var arr1 = ["张三",24, ...
- 在使用ajax实现三级联动调用数据库数据并通过调出的数据进行二级表单查询
在使用ajax实现三级联动查询数据库数据后再使用ajax无刷新方式使用三级联动调出的数据进行二级查询 但是现在遇到问题,在二级查询的时候期望是将数据以表格的形式展示在三级联动的下方,但是现在在查询后会 ...
- BootStra相关脚本引用说明
先看一个简单的模板(DOCTYPE是html5的文档类型) <!DOCTYPE html> <html lang="zh-CN"> <head> ...
- zzuli 2131 Can Win dinic+链式前向星(难点:抽象出网络模型+建边)
2131: Can Win Time Limit: 1 Sec Memory Limit: 128 MB Submit: 431 Solved: 50 SubmitStatusWeb Board ...
- YiShop_做个网上商城系统多少钱
随着国内电商的兴起,不少企业和个人卖家都已经意识到电商的重要性,于是就开始搭建自己网上商城,但是还是有很多人对网上商城还不是很了解,今天就由YiShop小编跟大家讲解网上商城系统的一些知识一.网上商城 ...