2012-03-08 12 views
2

私は2つの配列を持っています。最初はJSONフィードの辞書の配列です。 2番目の値は、私がUITableViewを生成するために使用している値の配列です。ios - 辞書の配列の値を調べる

テーブルの各行について、テーブルセルに書き込んでいる値が辞書の最初の配列に存在するかどうかを知る必要があるため、アクセサリタイプを適切に設定できます。これを行う簡単な方法はありますか、最初に各辞書からid値の別の配列を作成するほうがよいでしょうか?

は、私はそれが

答えて

2

あなたは辞書内検索ブロックでindexesOfObjectsPassingTest:を使用することができます;-)説明する他の方法を見ることができない、それは理にかなって願っていますが、それは最適ではない:あなたが再なりますユーザーがテーブルをすばやくスクロールするときに、アプリを減速させる可能性のある各セルについて同じ検索を何度も繰り返します。フィードを取得するとすぐにアイテムを持つNSSetを作成して、テーブルセルをレンダリングするときにそれを再利用する方がずっと良いでしょう。

例:

あなたのアクセサリビューを表示するかどうかを決定する必要が
allIds = [[NSMutableSet alloc] init]; // NSSet *allIds is declared 
     // in the same class as the array from which you get your table cells 
[responseArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    [allIds addObjectsFromArray:[arrayOfDictsFromJsonFeed allKeys]]; 
}]; 

、次の操作を行います:

をあなたはこのように、あなたのJSONフィードを受信したとき

NSSet *allIdsを構築

if ([allIds containsObject:currentId]) { 
    // Add accessory view 
} 
+0

これは私の経験レベルを超えたiOSです。これが私の最初のプロジェクトです。 – Dave

+0

@Dave確かに、例を見て、意味があるかどうかを見てください。 – dasblinkenlight

+0

ありがとう - 私は実際にデータのソースで私の問題のためのより単純なソリューションを考え出したので、何も比較せずにフラグを立てることができます。私は答えとしてマークするつもりですが、将来の参照のために行う方法を知ることは重要なことです。 – Dave

0

値が存在しない場合は辞書に追加し、にリンクする必要がありますセルを表示する必要があるときはいつでもこれをチェックすることができます。
これはすべてのスクロールを確認するよりもはるかに速くなります

関連する問題