사전은 요소의 순서가 없음을 의미하는 정렬되지 않은 집합입니다. 따라서 "첫 번째 값"과 "두 값"의 첫 번째 개체를 삽입하더라도 " 두 번째 값 "이라면 키를 반복 할 때 임의의 순서로 가져올 수 있습니다 (예 :"2 "다음에"1 ").
그러나 원하는 모든 값이 정렬 된 순서이면, 당신은으로 정렬 한 후, 모든 키를 반복 값을 가져 오기 및 배열에 저장하고 있습니다.
NSArray *values=[myDict allValues];
NSMutableArray *sortedKeys=[[NSMutableArray alloc] init];
NSArray *sortedValues = [values sortedArrayUsingSelector:@selector(yourSelector)];
for (val in sortedArray){
NSString *key=(NSString*)[[myDict allKeysForObject:val] objectAtIndex:0];
[sortedKeys addObject:key]
}
이는의에 먼저 값을 얻기를위한 스타터 것 주문 된 주문 및 해당 키를 차례로 누릅니다. (어떤 오류 검사도하지 않으므로 OutOfIndex 예외에주의하십시오.)
이 코드의 효율성이 얼마나 좋을지 모르겠다. allKeysForObject
은 모든 키를 반복 할 것이다.
출처
2012-01-20 22:15:47
aqs
정렬 후 데이터와 동일한 순서로 키를 가져 오는 방법은 없습니까? 그래도 꽤 좋아 보인다 :-) – Robbietjuh
실제로 그렇게 할 수있는 방법이있다. 나는 그것을 포함시킬 답을 편집했다. 좋은 대답을 수락하면 pls – aqs
대단히 감사합니다. 코드를 약간 편집해야했고 완벽하게 작동했습니다.그냥 내가하고 싶은 걸! 객체를 정렬하고 키를 가져온 다음 동일한 순서로 배치합니다. – Robbietjuh