UICollectionView 数据库元素分组 多种section分开显示
第一遍 复杂方法 : 数据库查询一个表中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分开显示的更多相关文章
- highCharts图表应用-实现多种图表的显示
在数据统计和分析业务中,有时需要在一个图表中将柱状图.饼状图.曲线图的都体现出来,即可以从柱状图中看出具体数据.又能从曲线图中看出变化趋势,还能从饼状图中看出各部分数据比重.highCharts可以轻 ...
- win8.1 win10存储设备和驱动器分开显示
win10同理如下: Windows 8.1不仅将资源管理器重命名为文件管理器,还将用户熟悉的“计算机/我的电脑”改名为“这台电脑”,同时还将原先的布局进行了重构,于是用户最终看到的是这样一个界面: ...
- css隐藏页面元素的多种方法
在平常的样式排版中,我们经常遇到将某个模块隐藏,下面我整理了一下隐藏元素的多种方法以及对比(有的占据空间,有的不占据空间.有的可以点击,有的不能点击.): ( 一 ) display: none; ...
- IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常
标准参考 根据W3C CSS2.1规范第8.3节中的描述,边距属性设置了一个框的边距区的宽度.'margin' 缩写属性设置所有四边的边距,而其它的边距属性( 'margin-top' ,'margi ...
- 对App数据库元素进行简单的设计
假如对<豆瓣>进行简单的数据库元素设计; 分析页面: 简单的豆瓣一共有以下页面{ 活动页面 活动详情页面 电影页面 电影详情页面 影院页面(一般不用到数据库,不及于数据库考虑) 我的{ 活 ...
- RB1001: IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常
标准参考 根据W3C CSS2.1规范第8.3节中的描述,边距属性设置了一个框的边距区的宽度.'margin' 缩写属性设置所有四边的边距,而其它的边距属性( 'margin-top' ,'margi ...
- Atitit 数据库排除某一列 字段 显示
Atitit 数据库排除某一列 字段 显示 GROUP_CONCAT 行列转换 mysql利用group_concat()合并多行数据到一行_Mysql_脚本之家 sELECT GROUP_CO ...
- 【css】绝对定位的元素在 ie6 下不显示
问题描述: 在 ie6 中如果一个浮动元素与绝对定位元素相邻的话,在某些情况下绝对定位元素将会消失. 产生原因: 只有当绝对定位元素的邻近浮动元素的宽度大于父层宽度减 3 时(即如果父层宽度是 300 ...
- ios8 UITableView section不显示
ios8 如果UITableView只设置viewForHeaderInSection,则可能section不能显示,iOS7及以下版本显示正常. 解决方案: 设置heightForHeaderInS ...
随机推荐
- SSH三大框架简介
我们知道,传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的 JSP.负责流程逻辑控制的Se ...
- python使用百度api翻译中英文
python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...
- HDU 1827 Summer Holiday
http://acm.hdu.edu.cn/showproblem.php?pid=1827 题意: 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家 ...
- git rm -r --cache命令 及 git .gitignore 文件
git 的 .gitignore 文件的作用是在代码提交时自动忽略一个文件.不将其纳入版本控制系统. 比如.一般我们会忽略IDE自动生成的配置文件等. 如果一个你要忽略的文件已经纳入到了git ,也 ...
- Angular 4.x 修仙之路
参考:https://segmentfault.com/a/1190000008754631 一个Angular4的博客教程目录
- Linux命令详解-rmdir
rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删除某目录时也必须具有对父目录的写权限. 1.命令 ...
- LA-4255 Guess (拓扑排序+构造)
题目大意:一个未知的整数序列,给出其任意一个区间和的正负,还原这个序列.任意一个满足条件的序列即可. 题目分析:将连续区间和转化为前缀和之差,sumx-1与sumy的大小关系已知,以此建立一条有向边, ...
- centos7 配置 NFS mount挂载服务器
1. NFS服务端 安装NFS服务 yum install nfs_utils yum install rpcbind (系统默认已经有了,可查看下) 配置共享文件夹 1. 创建文件夹: mkd ...
- IOS-项目中常见文件介绍
一.项目文件结构示意图 二.文件介绍 1.products文件夹:主要用于mac电脑开发的可执行文件,ios开发用不到这个文件 2.frameworks文件夹主要用来放依赖的框架 3.test文件夹是 ...
- 部署Jsp网站
最近在实习,记录一下第一次部署网站的详情. 首先在服务器上安装jdk环境,我安装的是Java1.8版本. yum search java |grep -i JDK //查看Jdk版本 yum inst ...