2011-01-28 37 views
27

我有一個數組,其中包含在其中的字典;那麼如何根據字典鍵值對數組進行排序呢?如何排序包含字典的數組?

+1

這個問題是存在於Stackoverflow http://stackoverflow.com/questions/4767219/how-to-sort-a-nsarray-which-contains-nsdictionary/4767282#4767282 – 2011-01-28 04:01:05

回答

79

如果數組中的每個元素都是包含某個鍵的字典,則可以使用排序描述符對數組進行排序。舉例來說,如果每一個元素是包含關鍵字的詞典就被稱爲「名」:

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" 
    ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; 
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors]; 
+0

如何排序int值? – 2017-11-01 11:40:44

1

爲什麼不使用已排序元素的屬性與數據結構已經存在的已排序字典?

請你檢查一下here

希望這有助於。

0

通過Bavarious上述共享答案幫助me.Just要多加一個thing.If要排序一個可變的陣列中使用像下面的代碼

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; 
NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy]; 
10

其他方式實現這一目標將使用sortedArrayUsingComparator:方法

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]]; 
}]; 
-2
let arrDescriptor = NSSortDescriptor(key: "order", ascending: true) 
let sortDescriptors: NSArray = [arrDescriptor] 
let sortedArray = instancesubArray.sortedArray(using: sortDescriptors as [AnyObject] as [AnyObject] as! [NSSortDescriptor]) 

print(sortedArray) 
+0

請使用[編輯]鏈接來解釋此代碼的工作原理,而不只是提供代碼,因爲解釋更有可能幫助未來的讀者。另見[回答]。 – 2017-06-28 18:56:33