zoukankan      html  css  js  c++  java
  • iOS tableView 数据处理,数据分类相同数据整合、合并计算总数总价

    //

    数据下载得到数组数据

     modelArray = [MZPriceModel mj_objectArrayWithKeyValuesArray:data[@"info"]];
            
            if (modelArray.count>0) {
                
                
                // 分类的数组 
                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=0; i<array.count; i++)
        {
            
            MZPriceModel * model = [array objectAtIndex:i];
            
            if (model.accounting_type == nil&&[model.accounting_type isEqualToString:@""]) {
                model.accounting_type = @"0";
            }
            [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=0; i<indexArray.count; i++)
        {
            //把每个不重复的数据当做一类数据
            NSMutableArray * muatbleArray = [[NSMutableArray alloc]init];
            
            //把原始数据分别归类
            for (int a=0; 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=0;k<arrayOld.count;k++)
        {
            NSMutableArray * array2 =[NSMutableArray array];
            
            NSMutableArray * array = [NSMutableArray array];
            //同一类的
            array =arrayOld[k];
            
            //得到相同类目的数组
            for (int i=0; i<array.count-1; i++)
            {
                //  把原始数据分别归类
                for (int a=1+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;
    }
  • 相关阅读:
    [SDOI2009]生日礼物(单调队列)
    [luogu1638]逛画展(单调队列)
    【最短路】·SPFA算法实现
    [UVA10474]大理石在哪儿
    【转载】C++中string erase函数的使用
    【转载】高精度减法的OP写法
    【转载】ST表
    串门赛: NOIP2016模拟赛——By Marvolo 丢脸记
    Bzoj 3813 奇数国 题解 数论+线段树+状压
    Bzoj 2064 分裂 题解
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6934079.html
Copyright © 2011-2022 走看看