値の配列を取得し、その配列をソートして、値に対応するキーを取得します。
あなたが使用して値を取得することができます。
NSArray* values = [myDict allValues];
NSArray* sortedValues = [values sortedArrayUsingSelector:@selector(comparator)];
しかし、あなたはあなたの例で示したようコレクションが(私が意味する、あなたがキーから値を推測することができます)、であるならば、あなたはいつでも並べ替えることができます代わりにキーを使用しています。
使用:
NSArray* sortedKeys = [myDict keysSortedByValueUsingSelector:@selector(comparator)];
コンパレータは、あなたが注文したいオブジェクトに送信されたメッセージセレクタです。
文字列を並べ替える場合は、NSStringコンパレータを使用する必要があります。 NSStringコンパレータは、caseInsensitiveCompareまたはlocalizedCaseInsensitiveCompare:です。
これらのいずれでも有効でない場合、あなたは
[values sortedArrayUsingFunction:comparatorFunction context:nil]
ビーイングcomparatorFunction(AppleDocumentationから)
NSInteger intSort(id num1, id num2, void *context)
{
int v1 = [num1 intValue];
int v2 = [num2 intValue];
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
はオーケーを取得するのに役立つコードですそれでは、私はあなたの第二の方法を使用したいとしましょう。正確には「コンパレータ」とは何ですか?申し訳ありません。以前はこの方法を使用したことがありませんでした。それは私自身の関数を書く必要があるということですか?それはどのように見えるでしょうか?ありがとう!! – CodeGuy
レスポンスを編集しましたが、今は十分であることを願っています – HyLian
@HyLian NSDictionaryに異なるキーの重複値が含まれているとどうなりますか?どのキーをピックアップするべきかをどのように追跡するのですか? –