2014-10-29 56 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