2011-11-30 2 views
6

안녕하세요.iPhone - NSDictionary를 포함하는 NSMutableArray를 두 개의 키로 정렬합니다.

다양한 NSDictionary가 포함 된 NSMutableArray가 있습니다. 각각의 NSDictionary에는 두 개의 키 - 값 쌍이 있습니다 (예 : username 및 loginDate).

이 NSMutableArray의 모든 NSDictionary를 loginDate 내림차순과 사용자 이름 오름차순으로 정렬해야합니다.

그냥 더 세부 사항을 설명하기 위해 :

NSMutableArray (index 0): NSDictionary -> username:"user1", loginDate:20 Dec 2011 
NSMutableArray (index 1): NSDictionary -> username:"user2", loginDate:15 Dec 2011 
NSMutableArray (index 2): NSDictionary -> username:"user3", loginDate:28 Dec 2011 
NSMutableArray (index 3): NSDictionary -> username:"user4", loginDate:28 Dec 2011 

을 정렬 한 후, 배열의 결과는 다음과 같아야합니다

NSMutableArray (index 0): NSDictionary -> username:"user3", loginDate:28 Dec 2011 
NSMutableArray (index 1): NSDictionary -> username:"user4", loginDate:28 Dec 2011 
NSMutableArray (index 2): NSDictionary -> username:"user1", loginDate:20 Dec 2011 
NSMutableArray (index 3): NSDictionary -> username:"user2", loginDate:15 Dec 2011 

내가 어떻게 이것을 달성 할 수 있습니까? sortUsingComparator 메서드 중 일부를 사용하여이 방법을 찾을 수 없습니다.

+0

loginDate가 문자열입니까, 아니면 NSDate입니까? –

+0

NSDate입니다. –

답변

6

어쩌면 이렇게 될까요?

[array sortUsingDescriptors: 
[NSArray arrayWithObjects: 
    [[[NSSortDescriptor alloc] 
    initWithKey:@"loginDate" 
    ascending:NO] 
    autorelease], 
    [[[NSSortDescriptor alloc] 
    initWithKey:@"username" 
    ascending:YES] 
    autorelease], 
    nil]]; 

당신이 아이폰 OS 4 건설 이상 당신도 할 수 있다면

는 :

이 재산 키 값을 비교 compare: 방법을 사용하여 작동
[array sortUsingDescriptors: 
[NSArray arrayWithObjects: 
    [NSSortDescriptor sortDescriptorWithKey:@"loginDate" ascending:NO], 
    [NSSortDescriptor sortDescriptorWithKey:@"username" ascending:YES], 
    nil]]; 

, 그 valueForKey:에 의해 반환되는 값입니다. NSDictionary의 경우 값을 얻으려면 다소 차이가 있습니다 (objectForKey:). 키 이름 앞에 "@"를 붙이는 것과 같은 특별한 표기법이 있습니다 (자세한 내용은 Difference valueforKey objectForKey 참조).

+0

조언을 주셔서 감사합니다. 확실히 다시 시도하고 피드백을 보내 드리겠습니다. :) –

+0

각 키에 대해 '비교 :'선택기를 사용하여 정렬됩니다. 원하는 경우 다른 선택기를 지정하거나 각 정렬 설명 자에 대해 사용자 정의 비교자를 사용할 수도 있습니다. –

+0

대단히 감사합니다! 그것은 작동합니다! :) –

관련 문제