2010-05-13 3 views
2

NSMutableDictionary (NSString 개체)의 NSMutableArray가 있습니다. NSString 객체 중 하나는 실제로 날짜이며 NSMutableArray를 해당 날짜를 기반으로 정렬해야하며 문자열로 날짜를 정렬하지 않으려합니다. 내가 어떻게 만들 수 있니?NSMutableDictionary의 NSMutableArray를 정렬하는 방법은 무엇입니까?

+1

NSDate 객체를 사용하여 간단한 compare : 메소드를 구현할 수 있기 때문에 데이터 모델의 클래스를 만드는 것도 고려해 볼 수 있습니다. 이런 변이 형 사전을 사용하면 특정 지점을 통과하면 혼동을 일으킬 수 있습니다. –

답변

6

올바르게 이해하면 배열에 문자열이 포함 된 사전이 있고 그 문자열을 날짜로 정렬하고 싶습니다. 이것과 같은 것 :

[someArray sortWithOptions: 0 usingComparator: ^(id inObj1, id inObj2) { 
    NSDate  *date1 = [NSDate dateWithString: [inObj1 objectForKey: @"dateString"]]; 
    NSDate  *date2 = [NSDate dateWithString: [inObj2 objectForKey: @"dateString"]]; 

    return [date1 compare: date2]; 
}]; 
+0

음, NSMutableArray에는 "sortWithOptions"와 같은 메소드가 없습니다. – Walkor

+0

10.6에서 소개되었습니다. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#jumpTo_31 –

1

sortedArrayUsingFunction:context: 메서드를 사용해야합니다. 예 :

NSInteger comparator(NSDictionary *d1, NSDictionary *d2, void *context) 
{ 
    return [[d1 objectForKey:@"date"] compare:[d2 objectForKey:@"date"]]; 
} 

// In some method: 
NSArray *sortedArray = [array sortedArrayUsingFunction:comparator context:nil]; 

참고 : 이것은 테스트되지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. – Walkor

관련 문제