Ios NSPredicate是否对两个属性进行排序?
我有一个核心数据表,如:Ios NSPredicate是否对两个属性进行排序?,ios,objective-c,sorting,core-data,nspredicate,Ios,Objective C,Sorting,Core Data,Nspredicate,我有一个核心数据表,如: =============================== student-Id || mark ================================ 3 || 20 3 || 10 3 || 30 || 1 ||
===============================
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
==============================
如何编写一个谓词以按上述顺序获取结果?我不认为可以在核心数据获取请求中使用谓词对结果进行排序。该职责属于您在获取中使用的排序描述符。每个排序描述符(NSSortDescriptor的一个实例)包含一个字符串键和一个顺序;您可以指定多个描述符,按照提供的顺序按多个键进行排序 例如,您似乎希望先按
学生Id
,然后按标记
对结果进行排序。在这两种情况下,您都希望首先得到最低的数字–您将按升序排序。因此,在创建核心数据获取请求后,您可以将其配置为具有两项sortDescriptors
数组:
// Assuming an existing "fetchRequest":
fetchRequest.sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"student-Id" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"mark" ascending:YES]
];
从那时起,您可以像往常一样继续提取请求。您需要在
NSFetchRequest
上使用2NSSortDescriptor
首先在StudentId
上,然后在mark
上,两者都应该是升序的。您不需要在这里进行预测。谢谢Tim。我试试这个,让你吃。