2016-05-26 8 views
-1

NSStringという配列の値がsortedRefsとなり、それぞれがNSDictionaryのキーで、quotesとなります。新しいNSDictionaryエントリが正しい順序でない

私がしようとしているのは、条件が満たされた場合に、そのキーを新しい値に変更して新しいNSDictionaryに渡すことです。

for (NSString *key in sortedRefs) { 
    NSLog(@"%@", key); 
    if ([[self.quotesManager.quotes[key] valueForKey:@"active"] boolValue]) { 
     [self.activeQuotes setObject:self.quotesManager.quotes[key] forKey:key]; 
     NSLog(@"%@", [self.activeQuotes allKeys]); 
    } 
} 

問題がactiveQuotes辞書は私がに値を挿入するために移入されていないということです。最初の3つのループの後に私の出力より具体的にはときに私あなたが見ることができるように

2016-05-26 23:10:59.939 Project[2553:94502] DE2109D0C637CBD755E91ED18F85C17E 
2016-05-26 23:10:59.940 Project[2553:94502] (
    DE2109D0C637CBD755E91ED18F85C17E 
) 
2016-05-26 23:10:59.940 Project[2553:94502] 309FFEB2DEC0F938D3E5FFD39112F9F6 
2016-05-26 23:10:59.940 Project[2553:94502] (
    DE2109D0C637CBD755E91ED18F85C17E, 
    309FFEB2DEC0F938D3E5FFD39112F9F6 
) 
2016-05-26 23:10:59.940 Project[2553:94502] 925DEC6CFB3FDF87530677FE93E97A46 
2016-05-26 23:10:59.940 Project[2553:94502] (
    925DEC6CFB3FDF87530677FE93E97A46, 
    DE2109D0C637CBD755E91ED18F85C17E, 
    309FFEB2DEC0F938D3E5FFD39112F9F6 
) 

です309FFEB2DEC0F938D3E5FFD39112F9F6キーの後に行くのではなく、925DEC6CFB3FDF87530677FE93E97A46を挿入してください。ループが進むにつれて、これはより頻繁に起こり、私はsortedRefsアレイで持っていたものとは全く異なるオーダーで終わる。

辞書に新しいエントリを挿入している間に注文を保存する方法はありますか?

+1

定義による辞書はソートされていません。あなたがそれらを必要とするならば、辞書はデータ構造の間違った選択です。 – Gruntcakes

答えて

3

辞書は保証された順序で格納されません。それらはキーによって参照されるように設計されています。特定の順序でアクセスする場合は、キー(配列など)の順序付けされたコレクションを保持し、それを使用してそれらを選択する必要があります。

関連する問題