2011-01-28 46 views
27

Tôi có một mảng chứa từ điển trong đó; Vậy làm thế nào tôi có thể sắp xếp mảng theo các giá trị khóa từ điển?Cách sắp xếp một mảng chứa từ điển?

+1

câu hỏi này có trong Stackoverflow http://stackoverflow.com/questions/4767219/how-to-sort-a-nsarray-which-contains-nsdictionary/4767282#4767282 –

Trả lời

79

Nếu mọi phần tử trong mảng là một từ điển có chứa một khóa nhất định, bạn có thể sắp xếp mảng bằng cách sử dụng bộ mô tả sắp xếp. Ví dụ, nếu mỗi phần tử là một từ điển chứa một chìa khóa gọi là "tên":

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

cách sắp xếp giá trị int? –

1

tại sao bạn không sử dụng từ điển được sắp xếp nơi thuộc tính của các phần tử được sắp xếp đi kèm với cấu trúc dữ liệu?

Xin đừng check it out here

Hope this helps.

0

Câu trả lời chia sẻ trên bởi Bavarious giúp me.Just muốn thêm một người nữa thing.If bạn muốn sắp xếp một sử dụng mảng có thể thay đổi một cái gì đó giống như mã dưới đây

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

Một cách khác để đạt được điều này sẽ được sử dụng phương pháp 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

Vui lòng sử dụng liên kết [chỉnh sửa] để giải thích cách mã này hoạt động và không chỉ cung cấp mã, vì giải thích có nhiều khả năng giúp người đọc trong tương lai. Xem thêm [trả lời]. –

Các vấn đề liên quan