2012-12-02 3 views
5

NSMutableArray에서 날짜 문자열 정렬에 대한 작은 작업을하고 있는데, sqlite db에서 배열을 가져오고 있습니다. 당신이이날짜 객체의 NSMutableArray를 정렬하는 방법

날짜 문자열처럼 보여주는 배열을 인쇄하는 경우이다 ( "2011-05-01", "2011-02-01", "2012-01-08", "2012- 05-08 ", "2010-01-09 )

내가 오름차순으로 날짜를 표시 할. ... 내가 objc하는 안돼서 ..... 사람을 저를 도와주세요

답변

22

먼저 모든 날짜 문자열 (NSString) 개체를 NSDate 개체로 변환 한 다음이를 정렬해야합니다. dateObjects .

나는 모든 문자열이 포함 된 dateArray이 있다고 생각합니다.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                  ascending:NO]; 
NSArray *descriptors = [NSArray arrayWithObject:descriptor]; 
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors]; 

또는

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; 
             }]; 
+0

그가 질문에 표시 한 날짜 형식은 문자열로 올바르게 정렬됩니다. –

+0

그건 불필요한데, 지금 당장 문자열을 배열 할 수 있습니다. – TheAmateurProgrammer

+0

가능하면 코드를 선호 하시길 바랍니다 ... – Joker

5

날짜의 형식 YYYY-mm-dd 정말 문자열이있는 경우, 귀하의 질문처럼, 다음이 오름차순으로 정렬됩니다

[arrayOfDates sortUsingSelector:@selector(compare:)]; 

그 귀하의 날짜가 실제로 NSDate 개의 개체 인 경우에도 작동합니다.

당신이 배열의 정렬 된 복사본을 만들려면 :

일반적으로 데이터베이스에 의해, IMO, 수행해야 정렬
NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)]; 
관련 문제