2017-12-29 10 views
0

저는 [Int : Any] 형식의 사전을 가지고 있습니다. 그 안에 많은 키 값 쌍이 있습니다. 밀리 초 시간 형식을 사용하여 사전을 정렬하고 싶습니다.밀리 초 (시간 형식)를 사용하여 NSDictionary를 정렬하는 방법은 무엇입니까?

[169887: ["noti_type": 0, "project_name": "Design Project", "eventCount": 6, "author_pic": " /file/download/profile$2348d4f21095a01cc16a8ad9bf08f966.jpg", "canvas_name": "Design Reference #31 : Windows in NYC", "lastUpdatedAt": 1513585053629, "author_name": "Jake Kyung "], 


173865: ["noti_type": 0, "project_name": "BeeCanvas DEV", "eventCount": 13, "author_pic": " &&&& /file/download/profile$80bbc9731a859d4e083df0df8044bcde.jpg &&&& /file/download/profile$2348d4f21095a01cc16a8ad9bf08f966.jpg", "canvas_name": "Android Release note", "lastUpdatedAt": 1513307315308, "author_name": " &&&& Sukho Bu &&&& Jake Kyung "] 

저는 제 사전에 이러한 종류의 값을 가지고 있습니다. 1513585053629 밀리 초 형식 인 lastUpdatedAt 값을 사용하여 정렬하려고합니다.

내가이있는 NSDate를 사용할 수있는 경우이 가능 말했다 일부 포스트를 통과 한

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @"dateOfInfo" ascending: NO]; 
NSArray *sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

[sortDescriptor 자료]

하지만 NSDate로 변환하는 대신 밀리 초 형식을 사용하여 직접 얻을 수 있는지 궁금한가요?

+0

(밀리 초) 날짜는 ** ** 숫자입니다. 사전에 따라 사전을 쉽게 정렬 할 수 있습니다. – the4kman

+0

특정 키 값 쌍을 지정하여 특정 키 값 쌍의 값에 따라 전체 사전을 정렬하려면 어떻게합니까? –

+0

사전은 정의에 의해 순서가 지정되지 않습니다. 정렬 할 수 없습니다. – vadian

답변

1

이 그냥 이해 데모입니다 ..

NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init]; 
    [dict1 setObject:@"Design Project" forKey:@"project_name"]; 
    [dict1 setObject:@"1513585053629" forKey:@"lastUpdatedAt"]; 

    NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init]; 
    [dict2 setObject:@"BeeCanvas DEV" forKey:@"project_name"]; 
    [dict2 setObject:@"1513307315308" forKey:@"lastUpdatedAt"]; 

    NSMutableArray *arr = [[NSMutableArray alloc]init]; 
    [arr addObject:dict1]; 
    [arr addObject:dict2]; 
    NSLog(@"original array = %@",arr); 

당신은 정렬 기술자에서 직접 키 이름을 부여 할 수 있습니다.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @"lastUpdatedAt" ascending:YES]; 
    NSArray *sortedArray = [arr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
    NSLog(@"sorted array = %@",sortedArray); 

출력 : -

sorted array = (
     { 
     lastUpdatedAt = 1513307315308; 
     "project_name" = "BeeCanvas DEV"; 
    }, 
     { 
     lastUpdatedAt = 1513585053629; 
     "project_name" = "Design Project"; 
    } 
) 
+0

@SritejaC 출력이 다르면 위와 같지 않음 –

+1

입력 해 주셔서 감사합니다. 실제로 많은 생각을하고 내 모델을 변경 했으므로 이제는 마지막으로 키를 업데이트하고 키를 정렬하는 것이 매우 쉽습니다. 'let sortedKeysDict = NotificationModel.unreadDict.sorted {$ 0.key> $ 1.key}' –

관련 문제