我有一个名为事件的核心数据实体,两个相关属性称为 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是否可行,或者是否有更聪明的方法?
答案 0 :(得分:0)
使用一种方法在NSDate上创建一个类别,该方法从仅返回日期的日期开始,例如转换这个:
2011-09-29 09:53:28 -0500
......对此:
2011-09-29
然后将排序键设置为dateAttribute.methodName
。