2014-11-28 2 views
16

두 개의 매개 변수 (예 : 이름, 설명)로 배열을 정렬하려고합니다. 배열을 이름순으로 정렬 한 다음 설명별로 정렬하는 것은 작동하지 않습니다. 그 이유는 배열이 이름순으로 정렬되지 않기 때문입니다.신속하게 두 개의 매개 변수에 배열 정렬

var sortedArray = sorted(items, { (o1: MyObject, o2: MyObject) -> Bool in 
      return o1.name < o2.name and o1.description < o2.description 
     }) 

감사

답변

27

귀하의 구문은 올바른 같습니다

이 솔루션은 다음과 같이해야한다. 종결자를

return o1.name == o2.name ? (o1.description < o2.description) : (o1.name < o2.name) 

으로 변경하십시오. 두 개 이상의 정렬 기준이 필요하면 구식 정렬 설명자를 사용하는 것이 좋습니다.

let sortedArray = (unsortedArray as NSArray).sortedArrayUsingDescriptors([ 
    NSSortDescriptor(key: "name", ascending: true), 
    NSSortDescriptor(key: "description", ascending: true), 
    .... 
]) as! [Object] 
+0

먼저 이름과 설명 순서로 정렬합니다. 그렇지 않으면 두 키를 동시에 정렬합니다. –

+0

반복이 없습니다. 이름이 (3 부), 이름이 같을 때는'description' (2 부)에 의해서만 정렬되어야합니다 (1 부). – Mundi

+0

목록에 세 번째 정렬 필터가있는 방법을 알려주시겠습니까? 아마도 두 가지만 작동하도록 할 수 있습니다. – cmario

관련 문제