我正在为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];
}
我使用了一些我知道的选项performSelectorOnMainThread
,dispatch_async()
和其他一些多线程技术。但没有什么能帮助我提高效率。
在模拟器中, 5秒。但是当谈到设备时,它几乎需要 20秒。
数据库由客户提供,因此我无法更改或修改任何表格。
任何人都可以帮助我提高效率。等待 20秒是非常恶心的。
感谢。
答案 0 :(得分:2)
您正在以错误的方式解决问题。 UITableView
将调用data source以允许您填充单元格。使用这些方法仅加载所需的行数据,而不是前面的所有10,000行。
我通常使用一种简单的缓存方法来避免在tableview中为不同的单元重复加载同一行,但是你最初不需要担心(如果你觉得数据库是被打得太厉害了。)