0

FMDB wrapperアプリケーションにクラスを使用していiPadます。私はtable10000近くのレコードを含んでいます。各レコードには 140 のフィールドがあります。Modal class取得した値を次のように保存するために使用しています。

 NSString *query = [NSString stringWithFormat:@"select * from table"];
 FMResultSet *results = [db executeQuery:query];
 while([results next]) {
    ModalClass *modal = [[ModalClass alloc] init];
    [modal setField1:value1];
    [modal setField2:value2];
    [modal setField3:value3];
    [modal setField4:value4];
    .
    .
    .
    .
    .
    [modal setField139:value139];
    [modal setField140:value140];

    [array addObject:modal];
 }

私が知っているいくつかのオプションperformSelectorOnMainThreaddispatch_async()およびその他のマルチスレッド手法を使用しました。しかし、これを効率的にするのに役立つものは何もありませんでした。

Simulatorでは、 5 秒かかります。しかし、デバイスに関しては、 20 秒近くかかります。

データベースはクライアントから提供されるため、テーブルを変更または変更できませんでした。

誰でもこれを効率的にするのを手伝ってくれますか? 20秒待つのはとても嫌です。

ありがとう。

4

1 に答える 1

2

あなたは間違った方法で問題に取り組んでいます。UITableViewには、セルにデータを入力できるようにするために呼び出されるデータソースがあります。これらのメソッドを使用して、10,000行すべてを前もってロードするのではなく、必要な行データのみをロードします。

私は通常、単純なキャッシュ方法を使用して、テーブルビュー内の異なるセルに対して同じ行が何度も再ロードされないようにしますが、最初はそれについて心配する必要はありません(データベースがヒットしていると感じた場合は、後で心配する必要があります)。難しい)。

于 2013-02-26T12:26:09.097 に答える