0

sqlite について質問がありましたが、ここで答えが見つかりませんでした。おそらく、私に答えていただくか、ここに記事を投稿してください。私のような他の多くの新しい開発者にとって役立つでしょう。

問題は、sqlite と CoreData を使用する場合の速度についてです。

CoreData を使用する場合、NSFetchedResultsController を使用できます。これにより、メモリの使用がより効率的になります。

sqlite を使用する場合、NSFetchedResultsController のようなものはありません。私の考えでは、次の 2 つの方法があります。

  1. viewDidLoad の sqlite データベースからすべてのデータをいくつかの配列にロードし、この配列を tableView:cellForRowAtIndexPath で使用します: indexPath.row を配列インデックスとして使用してデータを表示するには、すべてのデータをロードします

  2. viewDidLoad で行数を取得して numberOfRowsInSection で使用し、必要なデータのみを tableView:cellForRowAtIndexPath にロードします。次のようなクエリを使用します [NSString stringWithFormat: "select id, name from myTable limit 1 offset %d", indexPath.row];

方法 2 は良い考えですか、データを表示するたびに sqlite にクエリを作成するのは悪い考えですか? そうでない場合、どちらの方法がより高速に使用できますか?

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

4

2 に答える 2

0

スライディング配列スタイルのキャッシュを使用し、1 以外の制限を使用して、常にフェッチを実行しないようにする必要があります。そのため、キャッシュに行を要求してそこにない場合は、さらにスクロールする必要があることを期待して N 行ブロックを読み込みます。

または、一度に 1 つのクラスの CoreData を再発明するのではなく、CoreData とNSFetchedResultsController. :)

于 2013-11-20T14:42:45.987 に答える
0

データサイズにもよると思います。

サイズが小さい場合は、方法 1 が適しています。

sqlite を使用する必要がある場合は、20 行を表示できるときに一度に 30 行をロードしないでください。ユーザーが 25 行までスクロールしているのを見つけたら、さらに 30 行をロードします。そんな感じ。

私はコアデータの方が好きです。

于 2013-11-07T12:38:59.380 に答える