第一遍 复杂方法 : 数据库查询一个表中userID 然后进行分类 中间去重 获得ID个数  放到section 中  显示

#pragma mark -  查询不同的ID 各数 

- (void)checkIDsWithCount{

    

    RLMRealm * realm = [[RealmConfigurationshared]realm];

//    RLMResults * selectIDResults = [[CarVideoInfoObj objectsInRealm:realm where:@"userID !=0"] sortedResultsUsingKeyPath:@"hostID" ascending:NO];

    RLMResults * selectIDResults = [[CarVideoInfoObj  allObjectsInRealm:realm] sortedResultsUsingKeyPath:@"hostID"ascending:NO];

    NSLog(@"selectIDResults  is  %@",selectIDResults);

    

    NSMutableArray *userID = [NSMutableArrayarray];

    allSectionDic = [NSMutableDictionarynew];

    for(CarVideoInfoObj  * obj in selectIDResults){

        NSInteger userId = obj.userID;

        NSNumber * key = @(userId);

        NSMutableArray  * objects = [allSectionDicobjectForKey:key];

        if(objects == nil){

                objects = [NSMutableArraynew];

                [allSectionDicsetObject:objects forKey:key];

        }

        [objects  addObject:obj];

//        NSLog(@"objectID==== %ld",(long)userId);

//        [userID addObject:@(userId)];

    }

    NSLog(@"all carVideoInfo object list is %@",allSectionDic);

    // 去重查询个数

    NSLog(@"%lu",(unsignedlong)allSectionDic.count);

     //统计数组相同元素的个数

    sectionDic = [[NSMutableDictionaryalloc] init];

    set = [NSSetsetWithArray:userID];

    for (NSString *setString  inset){

        //需要去掉的元素数组

        NSMutableArray *filteredArray = [[NSMutableArrayalloc]initWithObjects:setString, nil];

        NSMutableArray *dataArray = userID;

        NSPredicate * filterPredicate = [NSPredicatepredicateWithFormat:@"NOT (SELF IN %@)",filteredArray];

        //过滤数组

        NSArray * reslutFilteredArray = [dataArray filteredArrayUsingPredicate:filterPredicate];

        NSLog(@"Reslut Filtered Array = %@",reslutFilteredArray);

        int number = (int)(dataArray.count-reslutFilteredArray.count);

        NSLog(@"number :%d",number);

        [sectionDicsetObject:[NSStringstringWithFormat:@"%d",number] forKey:setString];

    }

    NSLog(@"dic  is%@", sectionDic);

        _userIDdic = [[NSDictionaryalloc]init];

        _userIDdic = sectionDic;

    

        NSArray * keys = [_userIDdicallKeys] ;

       dicArray =[NSArrayarray];

        dicArray = keys;

}

 

#pragma mark - UICollectionView delegate dataSource

#pragma mark 定义展示的Section的个数

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

{

    // section  个数

       returnset.count;

}

#pragma mark 定义展示的UICollectionViewCell的个数

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

{

//    sectionDic  is{

//        10006 = 14;

//        10003 = 23;

//    }

    NSString *key = [dicArrayobjectAtIndex:section];

    NSString * count = [_userIDdicobjectForKey:key];

    return count.integerValue;

    

//        return 2;

    //    NSLog(@"2222_videoMode%@",self.videoMode);

    //    NSLog(@"_videoMode.videos count  is   %lu",(unsigned long)[self.videoMode.carVideoInfoObjArray count]);

    //    return [self.videoMode.carVideoInfoObjArray count];

    

}

 第二种方法  查询表格  讲userID 设置为字典的key 不进获取到了以userID不同的个数作为 section 而且每个 userI获取了每个userID的数据  为赋值显示 打好了基础 (仍不完善)

#pragma mark -  查询不同的ID 各数 

- (void)checkIDsWithCount{

    

    RLMRealm * realm = [[RealmConfigurationshared]realm];

    RLMResults * selectIDResults = [[CarVideoInfoObj  allObjectsInRealm:realm] sortedResultsUsingKeyPath:@"hostID"ascending:NO];

    NSLog(@"selectIDResults  is  %@",selectIDResults);

    allSectionDic = [NSMutableDictionarynew];

    for(CarVideoInfoObj  * obj in selectIDResults){

        NSInteger userId = obj.userID;

        NSNumber * key = @(userId);

        NSMutableArray  * objects = [allSectionDicobjectForKey:key];

        if(objects == nil){

                objects = [NSMutableArraynew];

                [allSectionDicsetObject:objects forKey:key];

        }

        [objects  addObject:obj];

    }

    NSLog(@"all carVideoInfo object list is %@",allSectionDic);

    _userIDdic = [[NSDictionaryalloc]init];

    _userIDdic = allSectionDic;

    NSArray * keys = [_userIDdicallKeys] ;

    dicArray =[NSArrayarray];

    dicArray = keys;

}

#pragma mark - UICollectionView delegate dataSource

#pragma mark 定义展示的Section的个数

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

{

    // section  个数

       returnallSectionDic.count;

}

#pragma mark 定义展示的UICollectionViewCell的个数

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

{

    NSString *key = [dicArrayobjectAtIndex:section];

//    NSString * count = [_userIDdic objectForKey:key];

    

    return [[_userIDdicobjectForKey:key] count];

}

 

第三种: 完善后的方法 及赋值

UICollectionView 数据库元素分组 多种section分开显示的更多相关文章

  1. highCharts图表应用-实现多种图表的显示

    在数据统计和分析业务中,有时需要在一个图表中将柱状图.饼状图.曲线图的都体现出来,即可以从柱状图中看出具体数据.又能从曲线图中看出变化趋势,还能从饼状图中看出各部分数据比重.highCharts可以轻 ...

  2. win8.1 win10存储设备和驱动器分开显示

    win10同理如下: Windows 8.1不仅将资源管理器重命名为文件管理器,还将用户熟悉的“计算机/我的电脑”改名为“这台电脑”,同时还将原先的布局进行了重构,于是用户最终看到的是这样一个界面: ...

  3. css隐藏页面元素的多种方法

    在平常的样式排版中,我们经常遇到将某个模块隐藏,下面我整理了一下隐藏元素的多种方法以及对比(有的占据空间,有的不占据空间.有的可以点击,有的不能点击.): ( 一 )  display:  none; ...

  4. IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常

    标准参考 根据W3C CSS2.1规范第8.3节中的描述,边距属性设置了一个框的边距区的宽度.'margin' 缩写属性设置所有四边的边距,而其它的边距属性( 'margin-top' ,'margi ...

  5. 对App数据库元素进行简单的设计

    假如对<豆瓣>进行简单的数据库元素设计; 分析页面: 简单的豆瓣一共有以下页面{ 活动页面 活动详情页面 电影页面 电影详情页面 影院页面(一般不用到数据库,不及于数据库考虑) 我的{ 活 ...

  6. RB1001: IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常

    标准参考 根据W3C CSS2.1规范第8.3节中的描述,边距属性设置了一个框的边距区的宽度.'margin' 缩写属性设置所有四边的边距,而其它的边距属性( 'margin-top' ,'margi ...

  7. Atitit 数据库排除某一列 字段 显示

    Atitit  数据库排除某一列 字段  显示 GROUP_CONCAT  行列转换 mysql利用group_concat()合并多行数据到一行_Mysql_脚本之家 sELECT GROUP_CO ...

  8. 【css】绝对定位的元素在 ie6 下不显示

    问题描述: 在 ie6 中如果一个浮动元素与绝对定位元素相邻的话,在某些情况下绝对定位元素将会消失. 产生原因: 只有当绝对定位元素的邻近浮动元素的宽度大于父层宽度减 3 时(即如果父层宽度是 300 ...

  9. ios8 UITableView section不显示

    ios8 如果UITableView只设置viewForHeaderInSection,则可能section不能显示,iOS7及以下版本显示正常. 解决方案: 设置heightForHeaderInS ...

随机推荐

  1. Java中private、protected、public和default的区别-001

    public: 具有最大的访问权限,可以访问任何一个在classpath下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. protected: 主要的作用就是用来保护子 ...

  2. mongodb可视化客户端下载

    网站:https://www.mongodbmanager.com/files/ 直接下载:https://www.mongodbmanager.com/files/mongodbmanagerpro ...

  3. consul 小結

    Consul Config 使用Git做版本控制的实现 https://segmentfault.com/a/1190000013807641 服务发现 - consul 的介绍.部署和使用 http ...

  4. synchornized实现原理

    synchronized是基于Monitor来实现同步的. Monitor 的工作机理: 线程进入同步方法中. 为了继续执行临界区代码,线程必须获取 Monitor 锁.如果获取锁成功,将成为该监视者 ...

  5. Eclipse关联JDK源码

    1. http://blog.csdn.net/weiwangchao_/article/details/25960961 2. 1.点 "window">"Pre ...

  6. 【Linux】使用awk批量杀进程

    pkill 杀一个用户的所有进程 pkill -u bingo 批量杀进程 使用ps -ef|grep aaa 查出相关进程 使用grep -v grep 过滤掉grep本身产生的进程 使用awk 打 ...

  7. Spring自定义注解扫描的实现

    目标:实现自定义spring自动扫描注解.主要为后期实现分布式服务框架自动注解提供技术支持 技术分析:通过配置组件扫描标签使spring解析标签. 1. JewelScanBeanDefaultPar ...

  8. wii 入门之路--fatt

    wii 入门之路--fatt system menu:系统界面,开机进入后,显示很多应用,4.1用IOS60. Channel:理解为界面中的软件应用和游戏. IOS:IOS(Input Output ...

  9. IOS UI-键盘处理和UIToolbar

    // // ViewController.m // IOS_0225-键盘处理和UIToolBar // // Created by ma c on 16/2/25. // Copyright © 2 ...

  10. 清华大学 pip 源

    pypi 镜像使用帮助 pypi 镜像每 5 分钟同步一次. 临时使用 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-pac ...