获取核心数据对象的唯一日历日期

时间:2014-08-05 19:41:27

标签: core-data

我们如何为核心数据对象获取唯一的日历日期?

例如: 如果我们有三个具有NSDates的情感对象:

"2014-08-04 20:33:42 +0000",
"2014-08-04 20:50:33 +0000",
"2014-08-04 20:50:46 +0000",
"2014-08-06 20:35:58 +0000",
"2014-08-08 20:33:49 +0000"

我想获得一个看起来像这样的NSDates数组:

2014-08-04 
2014-08-06 
2014-08-08

我已经将这些线程作为可能的解决方案进行了探索,但它们都不起作用。

可能的做法是为我正在搜索的托管对象创建时间和日期属性,但这似乎是一项笨重的工作。

另一种可能性是剥离所有NSDate的时间分量,然后再次过滤Dates数组以获得重复。再次,这似乎非常笨重,容易破裂。

我想获得一个只有日历日期的NSDates数组,然后使用该信息来呈现tableview单元格。当用户点击给定的tableView单元格时,我可以推送一个显示与该日历日期相关的数据的viewController。随着时间的推移,NSDates的数量可能会变得很大,因为有许多NSDates的对象需要搜索,因此解决方案应该是有效的。

1 个答案:

答案 0 :(得分:0)

您将不得不使用与您描述的方法类似的方法,因为这就是它需要完成的方式。

您正在存储NSDate值,但NSDate实际上并不代表某个日期 - 它代表一个特定的时刻,即一秒钟(它可能如果它被称为NSDateTime之类的东西会更好,但它不是。它实际上是NSTimeInterval周围的对象包装器,只是double。核心数据只保存此值,必要时自动转换为NSDate。因此,您的示例数据实际上并不具有唯一的日历日期。一天中的时间不同,这意味着每个样本值代表持久性存储中的不同double值。

如果您想要唯一的日期值,则需要添加仅编码日期的字段,或者获取所有NSDate样式属性并过滤结果。我可能会先使用 - 存储您实际需要查找的数据 - 但这两种方法都可以正常工作。