2011-08-24 9 views
0

다음 배열에 다른 배열이 들어 있습니다.이 NSArray의 요소를 어떻게 정렬합니까?

NSArray *results = [[NSArray alloc] initWithObjects: 
[NSArray arrayWithObjects:@"Nickname1", [NSNumber numberWithBool:YES], nil], 
[NSArray arrayWithObjects:@"Nickname2", [NSNumber numberWithBool:NO], nil], 
[NSArray arrayWithObjects:@"Nickname3", [NSNumber numberWithBool:YES], nil], 
[NSArray arrayWithObjects:@"Nickname4", [NSNumber numberWithBool:YES], nil], 
nil ]; 

어떻게이 배열의 요소를 두 번째 매개 변수 (부울 값)로 정렬합니까? NSSortDescriptor를 사용할 수 있습니까? (나는 전에 모든 YES를 원한다).

감사

답변

4

당신은이에 대한 sortedArrayUsingComparator 방법을 사용할 수 있습니다. YES 값 (값 1의 상수)이 NO 값 (상수 값 0)보다 먼저 정렬되기를 원하기 때문에 compare: 호출의 개체 순서 만 바꿉니다.

NSArray *sortedArray = [results sortedArrayUsingComparator:^(id o1, id o2) { 
    NSArray *ary1 = (NSArray *)o1; 
    NSArray *ary2 = (NSArray *)o2; 

    return [[ary2 objectAtIndex:1] compare:[ary1 objectAtIndex:1]]; 
}]; 
관련 문제