按日期和国家对表格视图部分进行分组
Posted
技术标签:
【中文标题】按日期和国家对表格视图部分进行分组【英文标题】:Grouping table view sections by day and country 【发布时间】:2011-09-28 12:00:50 【问题描述】:我有一个名为 Event 的核心数据实体,两个相关的属性名为 startDateTime 和 countryCode。我的问题是我的表格视图中的部分需要按日期和国家代码分组。我已经看到很多关于如何仅按天分组的示例(例如 Apple 的 DateSectionTitles),但是当我添加国家代码时,它变得更加复杂。
我使用 DateSectionTitles 示例中推荐的临时 sectionIdentifier,这些部分看起来像这样:“20110928 SE”、“20110929 SE”、“20110928 GB”等。
我第一次尝试这个:
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"startDateTime" ascending:NO];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"countryCode" ascending:NO];
sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil];
[sortDescriptor1 release];
[sortDescriptor2 release];
但这不起作用,因为 startDateTime 具有导致索引不匹配的时间组件。我需要的是在没有时间组件的情况下对 startDateTime 进行排序。
显而易见的解决方案是将日期和时间分成两个不同的实体属性。但是当我想到它时,这是行不通的,因为日期是相对于时区的。当手机更改时区时,日期和时间属性将无效。
我也尝试子类化 NSSortDescriptor 并创建自定义 compareObject 函数,但它似乎从未被调用,而且我找不到任何工作示例。
你会如何解决这个问题?子类 NSSortDescriptor 是要走的路,还是有更聪明的方法?
【问题讨论】:
【参考方案1】:在 NSDate 上创建一个类别,方法是从返回日期的日期中去除时间,例如转换这个:
2011-09-29 09:53:28 -0500
…到这个:
2011-09-29
然后将您的排序键设置为dateAttribute.methodName
。
【讨论】:
嗯不知道我可以使用这样的点。我现在就试一试。 哇,它有效!非常感谢TechZen!当我的声誉允许时,我会投票。以上是关于按日期和国家对表格视图部分进行分组的主要内容,如果未能解决你的问题,请参考以下文章
Swift UITableView(无部分)过滤到带有部分的表格视图
SQL - 如何在一年中的每个日期按年龄和状态对项目进行分组/计数 - 第 2 部分