Словарь - это неупорядоченный набор, что означает, что у него нет порядка элементов. Так что, даже если вы вставите первый объект, как, скажем, «one»: «first value», а затем «two»: «second значение ", когда вы перебираете ключи, вы можете получить его в любом случайном порядке (например," два "и затем" один ").
Однако, если вам нужны только значения в отсортированном порядке, вы можете перебрать все ключи, извлечь значения и сохранить их в массиве, а затем отсортировать их.
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).
Я не уверен, насколько хорошей была бы эффективность этого кода, ведь coz allKeysForObject
будет перебирать все ключи.