2016-02-21 50 views
1

我的NSDictionaryNSDictionary按數組值排序?

NSDictionary *sort = @{@"key1": @[@"one", @"two"], 
         @"key2": @[@"o", @"t", @"p"]}; 

,我想通過array.count分揀他。 雖然決定使用排序泡泡,然後添加元素std :: map,因爲他下令。 但也許有一些標準的解決方案?

回答

0

我不認爲你可以在字典中的鍵進行排序,但是如果你想要的按鍵陣列,以便基於其數值數組的數量,你可以做這樣的事情:

NSArray *sortedKeysArray = [dictionary keysSortedByValueUsingComparator: ^(NSArray *obj1, NSArray *obj2) { 
      if (obj1.count > obj2.count) { 
       return (NSComparisonResult)NSOrderedDescending; 
      } 
      if (obj1.count < obj2.count) { 
       return (NSComparisonResult)NSOrderedAscending; 
      } 
      return (NSComparisonResult)NSOrderedSame; 
     }]; 

然後,一旦你有鑰匙,你可以像這樣迭代它們:

for (NSString *key in sortedKeysArray) { 
    NSArray *array = [dictionary objectForKey:key] 
    // Do something now that you have the arrays in order from smallest to largest 
} 
+0

它的偉大工作!謝謝! – nickheck

+0

奇怪的是,NSOrderedDescending工作正常,但NSOrderedAscending,排序不正確。 – nickheck

+0

究竟發生了什麼? – RDSpinz