我是 iPhone 开发新手,我正在使用 Core Data 进行数据管理。我的托管对象有一个名为creationDate 的属性,我需要拥有数据库中所有不同日期的列表。为了减少我设置的开销
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"creationDate"]];
因为这就是所需要的。
我知道我可以设置 [fetchRequest setReturnsDistinctResults:YES];获取不同的日期,但如何在获取请求中仅获取 NSDate 的日期部分?
谢谢
托马斯
附注在 SQL 中,这看起来像: SELECT DISTINCT DATE(creationDate) FROM events;
最佳答案
“NSDate 的日期部分”我认为您的意思是与时间不同?如果商店中的条目具有时间编码,则您无法直接表达这一点以获得不同的结果。您可以做的是将模型中的creationDate拆分为两个属性:日期和时间,并将所有日期标准化为单个时间(或者如果您不关心时间,则可以丢弃时间)。如果您实际上仍然需要时间,它就在那里,但您可以纯粹根据日期进行查询。
如果您的实体有自己的子类,您可以通过编写一个自定义 setter 来实现这一点,该 setter 获取数据,通过 NSDateComponents 提取组件,并通过 NSCalendar 将它们重新组装成日期。
是的,看起来处理日期应该更简单,但是需要采取一些迂回的方式。
关于iPhone Core Data 获取日期操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152512/