2011-07-25 8 views
1

私は以下の2つの配列を持っています。すなわち、10個のIDを有するアレイAと、300個のIDを有するアレイBと、対応するすべてのデータとを含む。別の配列からの配列の問い合わせ

私は、アレイA内のすべてのエントリにだけループ配列B内のすべてのエントリをできたが、これは少し重い見える配列Aに記載されているidを持つBからのすべてのデータ

を取得したいですそのような単純な仕事のために。この場合、どのようなソリューションが最適でしょうか?

Thnx!

答えて

1

おそらくuse a predicate(、bがあなたの配列です):あなたの配列内のオブジェクトは、文字列のような単純なものであればそれだけでうまくいくかもしれない

NSPredicate* filter = [NSPredicate predicateWithFormat: @"self IN %@", a]; 
NSArray* result = [b filteredArrayUsingPredicate: filter]; 

、けれども。

+0

素晴らしい、これが何を探していたのですか – Jos

0

配列を使用している場合は、そうしないとどうやってやるのかわかりません。正しい要素にアクセスする唯一の方法は、配列をループすることです。

+0

文法的に間違ったタイトルになる小さなタイトルの編集をやめてください。これらの大量の一括編集を行う場合は、擬似タグを取り除いた後に余分な2秒間をとり、タイトルを大文字にして、結果のタイトルが実際に意味をなさないことを確認します。 – meagar

+0

確かにそれをします。ありがとうございました。私は文法がもっと間違っているのを見ていません。 –

+0

タイトルの最初の単語が大文字であることを確認してください。可能であれば、タイトルを質問にします。 **を行う代わりに**を行う方法 **、どうすればいいですか??**(疑問符に注意してください)。また、質問の本文に明白な間違いがあるかどうかスキャンし、存在する場合は署名/タグ行を削除し、適切な場合などは大文字で "i"を編集します。多くの編集内容は良いですが、誰かのために大部分の編集を残すことはできません。 – meagar

2

整列された配列が必要ない場合は、はるかに高速な検索時間(O(1)に強いバイアス)を持つハッシュテーブル(NSSetなど)に切り替えることができます。それ以外の場合は、配列全体をループして、すべてのメンバーをチェックしなければなりませんでした。

1

配列Bを塗りつぶしているときは、代わりにdictionaryにすることができます。 idsuniqueであるとすると、配列Aのキーのオブジェクトの値を配列Bから取得できます。これはループを回避し、ハッシュテーブルと同等のソートです。

戻り値には、特定のunique idの対応するデータが格納されます。