Dictionary是一個無序集合,意思是它沒有任何元素的順序。所以即使插入第一個對象,如「one」:「first value」,然後是「two」:「第二個值「,當你遍歷鍵時,你可能會以任意順序得到它(例如:」two「,然後」one「)。
但是,如果你想要的是按排序順序排列的值,你可以遍歷所有的按鍵,讀取值並將其存儲在一個數組,然後對其進行排序。
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]
}
這將是第一個獲得在S中的值首發orted順序,然後相應的鍵。 (它沒有進行任何錯誤檢查,因此請注意OutOfIndex異常)。
我不知道這個代碼的效率會有多好,因爲allKeysForObject
會迭代所有的鍵。
來源
2012-01-20 22:15:47
aqs
任何方式獲得與數據相同的順序排序後的密鑰?看起來不錯,但:-) – Robbietjuh
確實有這樣做的方法。我編輯了包含它的答案。如果足夠好,請接受答案 – aqs
非常感謝。我不得不編輯一些代碼,它完美的工作!正是我想要它做的!對對象進行排序,獲取鍵並按照相同的順序放置。 – Robbietjuh