0

我正在FMDB wrapper为我的应用程序使用类iPad。我有table其中包含近 10000 条记录。每条记录有 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()以及其他一些多线程技术。但是没有什么能帮助我提高效率。

模拟器中,需要5 秒。但是当涉及到设备时,它需要将近20 秒

数据库由客户提供,因此我无法更改或修改任何表。

谁能帮我提高效率。等待20秒是非常恶心的。

谢谢。

4

1 回答 1

2

您以错误的方式处理问题。将UITableView有一个数据源被调用以允许您填充单元格。使用这些方法仅加载您需要的行数据,而不是预先加载所有 10,000 行数据。

我通常使用一种简单的缓存方法来避免为 tableview 中的不同单元格一遍又一遍地重新加载同一行,但是您最初不需要担心这一点(如果您觉得数据库也被击中,请稍后再担心难的)。

于 2013-02-26T12:26:09.097 回答