2017-08-17 8 views
0

私はOSXで、objective-cはiOSではありません。私はそのNSDictionary to ordered NSArray

NSDictionary* dict = [NSDictionary alloc initWithObjectsAndKeys: 
       @"valueC", @"key3", 
       @"valueA", @"key1", 
       @"valueB", @"key2", 
       nil]; 

私はNSDictionaryののallKeysとallValuesを呼び出すと、私はNSArraysを得るようNSDictionaryのを持っています。 NSDictionaryは順序付けられていないコレクションなので、アプリケーションが実行されるたびに順序が変わります。私は必要なもの

は、すべての値を含む配列であるが、そのように昇順、アルファベット、キーの後に注文した:

@[@"valueA", @"valueB",@"valueC"]; //--> ordered after their keys key1,key2,key3 

EDIT 基本的に私はこの方法の反対を必要とする:

- keysSortedByValueUsingComparator: // -> valuesSortedByKeyUsingComparator: 

何か助けに感謝します。

+0

をソートされた値を持ってyがuはallKeys配列をソートいけませんあなたの要件に応じて? –

+0

hm ...多分私はあなたを理解していません。しかし、配列としてallValuesが必要です。キーの後ろにソートされます。 –

+0

allKeysをソートすると、ソートされたすべてのキーを列挙して、その値を取得できます。 –

答えて

0

あなたはアルファベット順で最初のキーを並べ替えることができます。

sortedKeyArray = [[mydict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

とこのソート配列を列挙し:

[sortedKeyArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    [sortedValueArray addObject:mydict[obj]; 
}]; 

今、あなたはsortedValueArray

+0

'objectsForKeys:notFoundMarker:'を使ってオブジェクトを取得できます。 – Willeke

関連する問題