Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSPredicate是否对两个属性进行排序?_Ios_Objective C_Sorting_Core Data_Nspredicate - Fatal编程技术网

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
上使用2
NSSortDescriptor
首先在
StudentId
上,然后在
mark
上,两者都应该是
升序的。您不需要在这里进行预测。谢谢Tim。我试试这个,让你吃。