0

私は次のような内容の説明NSMutableArrayを持っています:NSURLConnection

array {

    "<NSURLConnection: 0x60eb40>",
    "<NSURLConnection: 0x6030e0>",
    "<NSURLConnection: 0x602ce0>",
    "<NSURLConnection: 0x60c330>",
    "<NSURLConnection: 0x662f5a0>",
}

私はまた、NSMutableDictionaryそのキーが上記のアイテムであるように持っていますNSMutableArray

dictionary {

"<NSURLConnection: 0x602ce0>"  = "Last update: Sep 3, 2012";
"<NSURLConnection: 0x6030e0>"  = "Last update: Sep 7, 2012";
"<NSURLConnection: 0x60c330>"  = "Last update: Sep 4, 2012";
"<NSURLConnection: 0x60eb40>"  = "Last update: Sep 6, 2012";
"<NSURLConnection: 0x662f5a0>" = "Last update: Sep 5, 2012";

}

NSMutableDictionaryの同じ順序に一致するようにを並べ替える必要がありNSMutableArray indexesます。今私はこのようにやっています:

int a;
for (a=0; a<self.array.count; a++) {

    NSString *key    = [self.array objectAtIndex:a];
    NSString *object = [self.dictionary objectForKey:key];

    if (object !=nil) {
        [self.array removeObjectAtIndex:a];
        [self.array insertObject:object atIndex:a];
    }
}

NSMutableDicitioanryの順序に一致するようにこれを並べ替えるより良い方法はありNSMutableArrayますか?

ありがとうございました!

4

1 に答える 1

3

NSDictionaryキーと値のペアの順序を保証するものではありません。キー/値を設定された順序に保つ方法はなく、このように機能することは意味がありませんNSDictionary。(値を取得するには、インデックスではなくキーを使用します)。

表示目的で値またはキーを特定の順序で表示する場合は、取得後に並べ替えることができます。

NSArray * sortedKeys = [ [ myDictionary allKeys ] sortedArrayUsingSelector:... ] ;

また

NSArray * sortedKeys = [ [ myDictionary allKeys ] sortedArrayUsingComparator:... ] ;

次に、必要に応じて、ソートされたキーに関連付けられたオブジェクトを取得できます。

もう1つのオプションは、2つの別々の配列を維持することです。1つはキー用、もう1つは値用であり、それらを順番に保持します。

于 2012-09-07T19:07:00.073 に答える