2011-03-24 4 views
0

다음은 내가 가지고있는 것입니다 : NSDictionary 개체를 보유하고있는 NSMutableArray입니다. 각 NSDictionary에는 날짜 문자열이 요소로 있습니다.'날짜'로 NSArray를 정렬하십시오. 포함 된 NSDictionary의 요소

여기에 누군가가 내 배열 날짜별로 stories을 정렬 할 수있는 방법을 단서가 있습니까 각 NSDictionary

[dateFormatterIn setDateFormat:@"yyyyMMddHHmmss\n"]; 
[dateFormatterOut setDateFormat:@"dd.MM.yyyy"];  

for(NSMutableDictionary *thisStory in stories){ 
     id fromDate = [thisStory objectForKey:@"from_time"]; 
     id date = [dateFormatterIn dateFromString:fromDate]; 
     NSLog(@"%@", [dateFormatterOut stringFromDate:date]); 
    } 

의 날짜를 출력 나의 루프입니까? 나는 객관적으로 C에 상당히 익숙하다. 미리 감사드립니다!

답변

5

트릭을 할해야 당신의 이야기 배열의 sortUsingDescriptor의 방법을 사용하여 :

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"from_time" ascending: YES] autorelease]; 
[stories sortUsingDescriptors: [NSArray arrayWithObject: sortDescriptor]]; 
+0

이것은 내 선호도가됩니다. 또는 sortUsingSelector를 사용하여 스토리 클래스에 비교를 추가 할 수 있습니다. – vickirk

0

의 데이터 구조에 따라 가정 해 봅시다 : 배열 변수 이름 : 이제 = [ { date: "01-02-2015 02:01", value: 1, name: "rajan" }, { date: "01-02-2014 02:01", value: 11, name: "rajan1" }, { date: "01-02-2012 02:01", value: 111, name: "rajan2" } ]

collectionArray가있는 NSDictionary의 배열을 정렬하려면 날짜별로 우리는 다음 단계를 따른다.

NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat : @ "dd-MM-yyyy HH : mm"];

NSMutableArray *sortedArray = [[collectionArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) { 

    NSString *d1Str =[obj1 valueForKey:@"date"]; 
    NSString *d2Str =[obj2 valueForKey:@"date"] 

    NSString *d1Timestamp = [NSString stringWithFormat:@"%f", [[formatter dateFromString:d1Str] timeIntervalSince1970]]; 
    NSString *d2Timestamp = [NSString stringWithFormat:@"%f", [[formatter dateFromString:d2Str] timeIntervalSince1970]]; 

    return [d2Timestamp compare:d1Timestamp options:NSNumericSearch]; // descending order 


}] mutableCopy];` 
관련 문제