Я создал приложение, которое работает с базой данных sqlite внутри приложения. До iOS 8.2 он работал нормально, но после обновления метод запроса работает примерно на 100 (!!!) раз медленнее. Я попытался найти информацию об этой проблеме, но пока ничего не нашел. Кто-нибудь имеет такой же опыт? Вот мой метод, который отлично работал до сих пор. Вы видите какие-либо ошибки или возможности оптимизации внутри?Sqlite3 запрос очень медленно под iOS 8.2
Благодарим за помощь!
- (NSArray *)databaseContentWithQueryString:(NSString *)queryString {
NSDate *methodStart = [NSDate date];
NSMutableArray *retArray = [[NSMutableArray alloc] init];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(_database, [queryString UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
int columnCount = sqlite3_column_count(statement);
NSMutableArray *valueArray = [[NSMutableArray alloc] init];
NSMutableArray *keyArray = [[NSMutableArray alloc] init];
for (int i=0; i<columnCount; i++) {
int type = sqlite3_column_type(statement, i);
char *name = (char *) sqlite3_column_name(statement, i);
[keyArray addObject:[NSString stringWithFormat:@"%s",name]];
int intVal;
char *charVal;
if (type == SQLITE_INTEGER) {
intVal = sqlite3_column_int(statement, i);
[valueArray addObject:[NSNumber numberWithInt:intVal]];
}
if (type == SQLITE_TEXT) {
charVal = (char *) sqlite3_column_text(statement, i);
[valueArray addObject:[NSString stringWithUTF8String:charVal]];
}
if (type == SQLITE_NULL) {
intVal = 0;
[valueArray addObject:[NSNumber numberWithInt:intVal]];
}
}
NSDictionary *dict = [[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray];
[retArray addObject:dict];
}
sqlite3_finalize(statement);
}
//sqlite3_close(_database);
NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];
NSLog(@"executionTime = %f s", executionTime);
return retArray;
}
Привет, вы нашли точное решение для этого ответа? – Hariprasad