2010-08-27 23 views

Trả lời

109

Bạn có thể sắp xếp các phím và sau đó tạo một NSMutableArray bằng cách lặp lại chúng.

NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)]; 
NSMutableArray *sortedValues = [NSMutableArray array]; 
for (NSString *key in sortedKeys) 
    [sortedValues addObject: [dict objectForKey: key]]; 
+6

Tôi đã sử dụng câu trả lời của bạn trong câu trả lời cho http://stackoverflow.com/a/13406407/257533 –

+4

Vì vậy, đây có phải là câu trả lời đúng hay không? có nhiều phiếu bầu, nhưng không chấp nhận? –

+0

Đây là câu trả lời đúng. Đáng buồn thay, phương thức dễ dàng hơn (trong iOS 7) của '[dictionary keysSortedByValueUsingSelector: @selector (compare :)]' không hoạt động. Vì lý do nào đó, nó cho tôi kết quả gần như ngẫu nhiên theo thứ tự. Tôi tự hỏi nếu 'keysSortedByValueUsingSelector:' làm một cái gì đó mà nó chèn vào mảng dựa trên giá trị cuối cùng của mảng, đó là loại vô ích. – mikeho

-1

Nó là đơn giản hơn nhiều để sử dụng objectsForKeys:notFoundMarker: cho rằng

NSDictionary *yourDictionary; 
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]]; 
// As we using same keys from dictionary, we can put any non-nil value for the notFoundMarker, because it will never used 
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""]; 
Các vấn đề liên quan