使用sortedArrayUsingDescriptors进行部分排序

时间:2014-10-29 21:30:47

标签: ios sorting

我想在对整个数组进行排序之前对数组进行部分排序。以下将返回一个按“sortOrder”

排序的数组
[folders sortedArrayUsingDescriptors:@[NSSortDescriptor sortDescriptorWithKey:@"sortOrder" ascending:YES]]

数组将如下所示:[x,a,z,w,y]

但是当“sortOrder”首先等于零时,我想按升序排序“name”。

所以最终的数组看起来像这样:[a,x,z,w,y]

有没有人知道如何做到这一点?

"folders": [
     {
        "sortOrder": 0,
        "name": "x",
     },
     {
        "sortOrder": 0,
        "name": "a",
     },
     {
        "sortOrder": 1,
        "name": "z",
     },
     {
        "sortOrder": 3,
        "name": "y",
     },
     {
        "sortOrder": 2,
        "name": "w",
     }
]

1 个答案:

答案 0 :(得分:0)

传入两个排序描述符,一个用于“sortOrder”,第二个用于“name”:

NSArray *descriptors = @[
    [NSSortDescriptor sortDescriptorWithKey:@"sortOrder" ascending:YES],
    [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
];

NSArray *sortedArray = [folders sortedArrayUsingDescriptors:descriptors];

使用此设置,将按名称对具有相同排序顺序的任何两个项目进行排序。