考虑到我的核心数据对象存储如下:
|Name | ActionType | Content | Date |
|-----|------------|---------|-----------|
|Abe | Create | "Hello" | 2014-07-01|
|Cat | Create | "Well" | 2014-07-01|
|Abe | Create | "Hi" | 2014-07-02|
|Bob | Edit | "Yo" | 2014-07-03|
|Cat | Delete | "What" | 2014-07-04|
|Abe | Edit | "Haha" | 2014-07-05|
我想得到每个用户的最后一个动作,结果将是
|Abe | Edit | "Haha" | 2014-07-05|
|Cat | Delete | "What" | 2014-07-04|
|Bob | Edit | "Yo" | 2014-07-03|
有没有人知道如何使用NSFetchRequest做到这一点?到目前为止,我收集的内容,如果您想使用“分组依据”,您只能按原因检索组中的值(它将返回“Abe,Cat,Bob”而核心中没有其余数据数据对象)。与“returnsDistinctResults”类似,它不会返回整个对象。
我感觉核心数据没有配备,任何帮助&提示将不胜感激!
答案 0 :(得分:1)
核心数据是对象图,而不是数据库。核心数据本身没有唯一性概念,您可以在应用程序中实现它。这通常是使用find or create pattern完成的。此模式可帮助您防止存储重复的对象。
也就是说,您可以使用NSDictionaryResultType
从Core Data返回不同的结果。这不会阻止存储重复项,但可以用于从获取中返回不同的结果。编程指南中有example个。您可以通过使用要获取的托管对象的NSEntityDescription为给定实体提供此请求的所有属性。
为了获得具有每个“最后”时间戳的对象,您实际上希望获得具有该键路径的最大值的对象。这可以通过多种方式完成 - 子查询,关键路径运算符,expressions,etc。