Я использую UICollectionView для отображения списка контактов, все из таблицы контактов в БД.Производительность UICollectionView с FMDB
Для каждого элемента, я бегаю запрос к FMDB, который возвращает один контакт, как это:
__block CTVSimpleContact *simpleContact = [CTVSimpleContact new];
[_queue inDatabase:^(FMDatabase *db) {
FMResultSet *result = [_db executeQuery:@"SELECT * FROM contacts "
@"LIMIT 1 OFFSET ?", [NSNumber numberWithInt:index]];
while([result next]) {
[simpleContact setContactId:[result objectForColumnName:@"id"]];
[simpleContact setDisplayName:[result stringForColumn:@"display_name"]];
[simpleContact setEmail:[result stringForColumn:@"email"]];
NSString *photoUri = [result stringForColumn:@"photo_uri_low"];
if(photoUri != nil) {
[simpleContact setPhoto:photoUri];
}
}
}];
return simpleContact;
Моя проблема заключается в том, что прокрутка происходит крайне медленно, и когда я профиль с помощью Time Profiler я получаю, что все время тратится на [результаты next] при чтении строки из таблицы.
Что было бы следующим шагом для оптимизации этого? Прокрутка чрезвычайно отсталая примерно на 2 КБ.
Спасибо!