核心数据 - 获取具有所有属性的不同记录

时间:2014-07-31 01:30:12

标签: core-data

考虑到我的核心数据对象存储如下:

|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”类似,它不会返回整个对象。

我感觉核心数据没有配备,任何帮助&提示将不胜感激!

1 个答案:

答案 0 :(得分:1)

核心数据是对象图,而不是数据库。核心数据本身没有唯一性概念,您可以在应用程序中实现它。这通常是使用find or create pattern完成的。此模式可帮助您防止存储重复的对象。

也就是说,您可以使用NSDictionaryResultType从Core Data返回不同的结果。这不会阻止存储重复项,但可以用于从获取中返回不同的结果。编程指南中有example个。您可以通过使用要获取的托管对象的NSEntityDescription为给定实体提供此请求的所有属性。

为了获得具有每个“最后”时间戳的对象,您实际上希望获得具有该键路径的最大值的对象。这可以通过多种方式完成 - 子查询,关键路径运算符,expressionsetc