0

私は、合計行数が設定された UITableview に取り組んでおり、そのうちのいくつかはユーザーのアクションに応じて挿入および削除されます。このアクションを実装するのに最も効率的な方法を決定するのに苦労しています。私が持っていた 2 つのアイデアはどちらも機能しますが、あまりクリーンな実装ではありません。彼らです:

1) ブール値を (shownInTable) というデータに追加し、shownInTable を挿入時に YES に設定し、削除時に NO に設定します。

このメソッドの問題は、tableView がセクションの行数またはセルを要求するときに、現在表示されているデータを確認しながら、配列を反復処理する必要があることです。

2) 2 つの配列を作成します。1 つは参照としてすべてのデータを含み、もう 1 つは表示されたデータのみを含む変更可能です。可変配列からテーブルにデータを渡します。参照配列を使用して可変配列に挿入するデータを取得し、必要に応じて可変配列から削除します。

これに関する問題は、長いセットアップ プロセスが必要で、両方のアレイを作成する必要があることです。つまり、10 行のデータがある場合... 10 個のオブジェクトが作成されて参照配列に配置され、5 個が複製されて可変配列に配置されます。

このデータがテーブルに出入りするときに、このデータを追跡するためのより良い方法はありますか?

ありがとう!

4

1 に答える 1

1

同じオブジェクトを 2 つの配列に配置すると、オブジェクトは複製されず、単純に 2 回参照されます。
したがって、ほとんどの場合、2 番目の方法が正しい方法です。

たとえば、フィルターの目的が検索である場合、最初の配列を作成し、次に述語を含むフィルターを使用して 2 番目の配列を作成して、作成プロセスを高速化できます。

たとえば、オブジェクトの配列 (この例ではアクティビティの配列) があり、「プログラミング」を含むアクティビティのみを表示したいとします。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(activityName CONTAINS[cd] %@)", @"programming"];  // activityName is the @property that you want to apply the filter to
NSMutableArray *arrayToShow = [[firstArray filteredArrayUsingPredicate:predicate] mutableCopy];
于 2013-09-02T17:50:53.503 に答える