核心数据 NSDate 搜索独特的日子和排序

Posted

技术标签:

【中文标题】核心数据 NSDate 搜索独特的日子和排序【英文标题】:core-data NSDate searching for unique days and sorting 【发布时间】:2010-04-12 10:06:41 【问题描述】:

关于这个地方的 NSDates 上有很多信息,但我还没有找到一个明确的解决方案。

我有一个Event 实体列表,每个实体都可能有很多EventSessionTimes。

Event > EventSessionTime

在一个表格视图中,我想显示具有Events 的日期的唯一列表,在另一个表格视图中,我想显示特定日期的事件(按时间排序)。

为了实现这一点,我目前有 2 个 NSDates - 一天和一次 - 以及一些过于复杂的搜索/排序。我想删除这些多余的信息。

考虑到这一点,我该怎么做:

1) 查找所有具有事件的 UNIQUE 日期,不关心具体时间

2) 查找特定日期的所有事件(此处重复)

任何关于如何更好地实现这一目标的提示都会很棒。

谢谢。

【问题讨论】:

【参考方案1】:

我现在有以下关系。还有多余的日期信息..

Event > EventSessionTime EventDay

1) 查找所有具有事件的 UNIQUE 日期,不关心具体时间

我可以创建我知道时间的特定日期。我的应用程序的本地化特性意味着我可以安全地执行此操作。

...
[NSEntityDescription entityForName:@"EventSessionTime" inManagedObjectContext:self.managedObjectContext];
...
NSArray *res = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[self myResultArray:[res valueForKeyPath:@"@distinctUnionOfObjects.eventDay.day"]];

你可以推断出我的属性和关系名称。

2) 查找特定日期的所有事件(此处重复)

我使用以下谓词来查找指定日期的所有事件。它不返回重复项

[NSPredicate predicateWithFormat: @"(SUBQUERY(eventTime, $x, $x.eventDay.day == %@).@count > 0)", <the day selected from the previous list>];

【讨论】:

以上是关于核心数据 NSDate 搜索独特的日子和排序的主要内容,如果未能解决你的问题,请参考以下文章

今天按 NSDate 对 NSArray 进行排序

通过 NSDate 对元素进行排序并添加到 UITableView

从按格式化日期排序的核心数据中获取

将核心数据过滤/排序到数组中

核心数据按格式化日期排序表格视图

核心数据聊天应用获取一批按日期排序的消息