【问题标题】:Grouping table view sections by day and country按日期和国家对表格视图部分进行分组
【发布时间】:2011-09-28 12:00:50
【问题描述】:

我有一个名为 Event 的核心数据实体,两个相关的属性名为 startDateTimecountryCode。我的问题是我的表格视图中的部分需要按日期和国家代码分组。我已经看到很多关于如何仅按天分组的示例(例如 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 是要走的路,还是有更聪明的方法?

【问题讨论】:

    标签: uitableview core-data ios4


    【解决方案1】:

    在 NSDate 上创建一个类别,方法是从返回日期的日期中去除时间,例如转换这个:

    2011-09-29 09:53:28 -0500
    

    …到这个:

    2011-09-29
    

    然后将您的排序键设置为dateAttribute.methodName

    【讨论】:

    • 嗯不知道我可以使用这样的点。我现在就试一试。
    • 哇,它有效!非常感谢TechZen!当我的声誉允许时,我会投票。
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2015-09-28
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多