分组表视图白天和国家
问题描述:
部分我有一个核心数据实体,称为事件和两个相关的属性被称为的startDateTime和COUNTRYCODE。我的问题是我的表格视图中的部分需要按日期和国家代码进行分组。我已经看到很多关于如何实现按日分组的例子(例如Apple的DateSectionTitles),但是当我添加国家代码时,它变得更加复杂。分组表视图白天和国家
我用一个短暂的sectionIdentifier作为DateSectionTitles例如推荐和部分看起来是这样的: “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是要走的路,还是可能有更聪明的方法?
答
使用一种方法在NSDate上创建一个类别,该方法从仅返回一天的日期开始剥离时间。将这个:
2011-09-29 09:53:28 -0500
...这样的:
2011-09-29
然后设置您的排序键dateAttribute.methodName
。
他不知道我可以使用这样的点。我现在就试试看。 – Heinemeister
哇,它的作品!非常感谢TechZen!当我的声望允许的时候,它会升级。 – Heinemeister