Мне нужно загрузить некоторые данные конфигурации после обновления приложения для моего приложения iphone.Я связываю файл с кучей операторов SQL (800+) для запуска при первом запуске.Похоже, я могу нарисовать в углу сейчас.Если я запускаю его в главном потоке при запуске, он запускается так долго, что приложение вылетает из-за слишком долгого запуска.Если я запускаю его в отдельном потоке, я получаю сообщения об ошибках базы данных (подпрограмма библиотеки вызывается не по порядку).Я думаю, это потому, что приложение продолжает загружать и читать БД в главном потоке.
Вот метод, который получает данные из файла CSV, а затем перебирает и записывает в БД.
Есть идеи о том, как заставить это работать быстрее при запуске или успешно работать без конфликтов в фоновом потоке с низким приоритетом?
+ (void) updateDB:(NSString *)data {
NSArray *lineArray = [data componentsSeparatedByString:@"\n"];
if (sqlite3_open([[BIUtility getDBPath] UTF8String], &database) != SQLITE_OK) {
sqlite3_close(database);
NSLog(@"Failed to opendatabase in updateDB");
}
char *errorMsg;
for(int k = 0; k < [lineArray count]; k++){
NSString *loadSQLi = [lineArray objectAtIndex:k];
if (sqlite3_exec(database, [loadSQLi UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
NSLog(@"DB Error. '%s'", sqlite3_errmsg(database));
}
}
if(database) sqlite3_close(database);
}