我在Core Data中有一个表格,如:
===============================
student-Id || mark
================================
3 || 20
3 || 10
3 || 30
||
1 || 30
1 || 20
1 || 10
||
2 || 10
2 || 30
2 || 20
===============================
我可以轻松获取按学生ID排序的结果,但我需要结果显示按升序排列的所有ID和标记,如下所示:
===============================
student-Id || mark
===============================
1 || 10
1 || 20
1 || 30
||
2 || 10
2 || 20
2 || 30
3 || 10
3 || 20
3 || 30
==============================
如何编写单个谓词以按上述顺序获取结果?
答案 0 :(得分:2)
我不相信您可以使用谓词在Core Data抓取请求中对结果进行排序。该责任属于您在提取中使用的排序描述符。每个排序描述符 - NSSortDescriptor的一个实例 - 包含一个字符串键和一个顺序;您可以按照提供的顺序指定多个描述符以按几个键排序。
例如,您似乎希望先按student-Id
排序结果,然后按mark
排序。在这两种情况下,您首先需要最低的数字 - 您将按升序排序。因此,在创建Core Data fetch请求后,您可以将其配置为具有两项sortDescriptors
数组:
// Assuming an existing "fetchRequest":
fetchRequest.sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"student-Id" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"mark" ascending:YES]
];
从那时起,您可以照常继续提取请求。