2011-07-05 2 views
0

NSDictionnary의 배열이 있는데 int 값 (키의 이름은 "age")으로 정렬하고 싶습니다. 예 :iOS의 sortedArrayWithSelector 및 NSDictionnary

Dic1 : age = 30, sex = male; Dic2 : 나이 = 24, 성별 = 남성;

어레이 : Dic1, Dic2;

지금 비교하는 방법 내가 가지고 사장님 것이다 :

배열 : Dic2, Dic1;

많은 것을 시도했지만 작동하지 않습니다. 편집 내가 NSSortDescriptor을 사용하는 것으로하지만, iOS 4.0 버전 :(

당신이 솔루션을 가지고 이후에만 사용할 수 감사

:

- (NSComparisonResult)compareGood:(NSDictionary *)otherObject 
{ 
    return [[self objectForKey:@"age"] compare:[otherObject objectForKey:@"age"]]; 
} 
:

내가있는 NSDictionary 범주에 비교 방법을 썼다?!

하지만이 오류가 발생했습니다 : 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 응용 프로그램을 종료하는 중 '* - [NSCFNumber compare :] : nil argument'

답변

2

NSSortDescriptor에 대한 문서는 말한다 : 아이폰 OS 2.0 이상에서 사용 가능

합니다.

마찬가지로 NSMutableArray 메서드 -sortUsingDescriptors:에 대해서도 마찬가지입니다.

NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"age" 
                  ascending:YES] 
                  autorelease]; 
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]; 

또는에서 myArray는 변경할 수없는 경우, 두 번째 줄이 작업을 수행 :이 작업을 수행 할 수 있어야한다

NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 
+0

sortDescriptorWithKey : 오름차순 : 및 sortedArrayUsingDescriptor은 아이폰 OS 4.0 이후에서만 사용할 수 있습니다. 하지만 지금은 sortUsingDescriptors를 사용하고 있습니다 : initWithKey : ascending : – Pierre

+0

좋은 지적 - '-initWithKey : ascending :'을 사용하도록 예제를 업데이트했습니다. – Caleb