Я создаю приложение для словаря и пытаюсь загрузить термины в словарь iphone для использования.Термины определены из этой таблицы ( SQLite ):
id -> INTEGER autoincrement PK
termtext -> TEXT
langid -> INT
normalized -> TEXT
Нормализация используется, потому что я пишу на греческом языке, и у меня нет icu на движке sqlite для поиска диакритических знаковтаким образом, я делаю терминологический диакритический знак / нечувствительный к регистру.Это также основное поле поиска, в отличие от termtext, который может быть полем «view».
Я определил класс (например, POJO) следующим образом:
term.h
#import <Foundation/Foundation.h>
@interface Terms : NSObject {
NSUInteger termId; // id
NSString* termText; // termtext
NSUInteger langId; // langid
NSString* normalized; // normalized
}
@property (nonatomic, copy, readwrite) NSString* termText;
@property (nonatomic, copy, readwrite) NSString* normalized;
@property (assign, readwrite) NSUInteger termId;
@property (assign, readwrite) NSUInteger langId;
@end
term.c
#import "Terms.h"
@implementation Term
@synthesize termId;
@synthesize termText;
@synthesize langId;
@synthesize normalized;
@end
Теперь в своем коде я использую FMDB в качестве оболочки для SQLite база данных.Я загружаю термины, используя следующий код:
[... fmdb defined database as object, opened ]
NSMutableArray *termResults = [[[NSMutableArray alloc] init] autorelease];
FMResultSet *s = [database executeSQL:@"SELECT id, termtext, langid, normalized FROM terms ORDER BY normalized ASC"];
while ([s next]) {
Term* term = [[Terms alloc] init];
term.termId = [s intForColumn:@"id"];
[... other definitions]
[termResults addObject:term];
[term release];
}
Затем весь termResults загружается в UITableView (на viewdidload), но загрузка занимает до 5 секунд каждый раз, когда я запускаю свойприложение.Есть ли способ ускорить этот процесс?Я проиндексировал id, termText и нормализовал на SQLite .
*** ОБНОВЛЕНИЕ: добавлено cellForRowAtIndexPath ****
[.. standard cell definition...]
// Configure the cell
Term* termObj = [self.termResults objectAtIndex:indexPath.row];
cell.textLabel.text = termObj.termText;
return cell;