2012-03-14 2 views
0

두 개의 NSMutableDictionary 개체가 있습니다. Dict 1은 dict 2보다 적은 수의 키를 가지고 있지만 두 사전이 공유하는 키는 구문이 동일합니다. 나는 dict 1에서 그 키에 대한 값을 dict 2로 정렬하고 싶습니다. Dict 2의 값은 정수입니다.하나의 사전을 다른 iPhone으로 정렬

누군가 나를 시작할 수 있습니까?

편집 : 키와 숫자 값이 포함 된 사전과 키가 하나 있습니다. 사전의 키와 값은 배열의 키/객체보다 많습니다. 사전에서 키의 해당 값으로 배열을 다시 정렬하고 싶습니다.

질문에 대한 재실행을 드려 죄송합니다.하지만 이보다 정확합니다.

+0

안녕, 나는, 죄송하지만이 문장은 이해가되지 않습니다 : 당신은 이러한 호출에 설명서를 읽어야한다 "DICT 1 DICT 2보다 적은 수의 키를 가지고,하지만 둘 다에있는 키는 정확히 동일합니다. " 아마 오타일까요? – amattn

+0

질문이 업데이트되었습니다. 나는 그들이 공유하는 키가 모두 동일한 문자열이지만, dict 2에는 dict 1에없는 키가 있다고 말하고자한다. – Eric

답변

0

sortedArrayUsingComparator : 메서드 호출을 찾고 계십니까? 이것은 하나의 배열을 취하고 정렬 된 요소가있는 배열을 반환합니다.

다음은 "정렬 순서"필드의 값에 따라 사전을 정렬하는 몇 가지 샘플 코드입니다.

NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) { 

    if ([[obj1 objectForKey:@"sortorder"] intValue] > [[obj2 objectForKey:@"sortorder"] intValue]) { 
     return (NSComparisonResult)NSOrderedDescending; 
    } 
    if ([[obj1 objectForKey:@"sortorder"] intValue] < [[obj2 objectForKey:@"sortorder"] intValue]) { 
     return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
}; 

+ (NSArray *) returnSortedArrayByAlpha:(NSArray*) inputArray whichField:(NSString*) whichField { 

    NSArray * sortedArray = [inputArray sortedArrayUsingComparator:sortBlock]; 
    return sortedArray; 
} 
+0

어레이 및 사전에 해당 코드를 추가 할 수 있습니까? [배열 sortedArrayUsingComporator ...] 같은 컴파일러 함수? – Eric

0

여기에 근본적인 오해가있을 수 있습니다. NSDictionaryNSSet 개체는 항상 정렬되지 않습니다.

NSArrayNSOrderedSet 개체 만 정렬됩니다.

아마도 세 번째 객체 인 NSArray를 만들고 원하는 키로 채우고 싶을 것입니다.

NSArray를 반복하면 정렬 된 배열 순서로 사전 개체에 액세스 할 수 있습니다.

+0

나는 나의 질문을 편집했다. 해당 사전에있는 일부 객체 만 반복하는 방법을 모르겠다. – Eric

관련 문제