2014-10-29 47 views
1

我想在排序整个数组之前做一个数组的部分排序。下面将返回上排序“中将sortOrder”数组部分排序使用sortedArrayUsingDescriptors

[folders sortedArrayUsingDescriptors:@[NSSortDescriptor sortDescriptorWithKey:@"sortOrder" ascending:YES]] 

数组看起来就像这样:[X,A,Z,W,Y]

,但我想作为排序依据“名”当“sortOrder”等于零时,按升序排列。

所以最后阵列是这样的: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", 
    } 
] 

回答

0

通在两种类型的描述符,一个用于“中将sortOrder”,第二个“名”:

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

NSArray *sortedArray = [folders sortedArrayUsingDescriptors:descriptors]; 

采用这种设置,具有相同的排序顺序任意两个项目将被排序名称。

+0

谢谢,这样做! – 2014-10-29 23:04:52