2011-12-31 3 views
5

두 개의 NSMutableArrays가 있습니다. 첫 번째의 내용은 두 번째의 내용에 페어링하는 수치입니다 : 두 배열의 모양을의하나를 기반으로 두 개의 NSMutableArrays를 주문하십시오.

First Array Second Array 
    45    Test45 
    3    Test3 
    1    Test1 
    10    Test10 
    20    Test20 

.

First Array Second Array 
    1    Test1 
    3    Test3 
    10    Test10 
    20    Test20 
    45    Test45 

감사 : 지금은 그렇게 수치를 주문할 수있는 방법 그래서 그들은처럼 끝!

+2

"인덱스 정렬"이라고합니다. 이상하게도 Objective-C 나 대부분의 다른 환경에서이 작업을 수행하는 라이브러리 루틴은 없습니다. 따라서 가장 간단한 방법은 항목을 다른 객체 (First Array 요소/Second Array 요소)에 넣고 해당 객체를 정렬 한 다음 배열을 재구성하는 것입니다. 그렇지 않으면 자신의 정렬 루틴을 작성해야합니다. –

+0

미안하지만, 이해하지 못했습니다. (이것은 배열 정렬을 처리 할 때 처음이므로 잘 모르겠습니다 :( – pmerino

답변

17

두 배열을 키와 값으로 사전에 넣을 것입니다. 그런 다음 첫 번째 배열 (사전의 키 역할)을 정렬하고 동일한 순서로 사전의 값에 빠르게 액세스 할 수 있습니다. 첫 번째 배열의 객체가 NSCopying을 지원하는 경우에만 작동하므로이 방법은 NSDictionary이 작동하기 때문에 작동합니다.

다음 코드는이를 수정해야합니다. NSDictionary이 좋은 편리 방법을 제공하기 때문에 실제로는 매우 짧습니다.

+3

) 키가 없으면 대단히 멋진 코드이지만 대소 문자를 처리하지 않습니다. 독특한. –

8

두 개의 병렬 배열을 유지하는 대신 하나의 모델 개체 배열을 유지합니다. 첫 번째 배열의 각 숫자는 한 속성의 값이고 두 번째 배열의 각 문자열은 다른 속성의 값입니다. 그런 다음 sort descriptors을 사용하여 두 속성 중 하나 또는 둘 모두를 정렬 할 수 있습니다.

일반적으로 코코아 및 코코아 터치에서는 모델 객체가 작업을 저장하는 동안 병렬 배열이 작동합니다. 당신이 할 수있는 어디든지 이전에 후자를 선호하십시오.

관련 문제