Tôi đã tạo một ứng dụng hoạt động với cơ sở dữ liệu sqlite bên trong ứng dụng. Trước khi iOS 8.2 hoạt động tốt, nhưng sau khi cập nhật, phương thức truy vấn hoạt động chậm hơn khoảng 100 (!!!) lần. Tôi đã cố gắng tìm thông tin về vấn đề này nhưng tôi chưa tìm thấy bất cứ điều gì. Có ai có cùng trải nghiệm không? Đây là phương pháp của tôi đã hoạt động hoàn hảo cho đến bây giờ. Bạn có thấy bất kỳ lỗi hoặc khả năng tối ưu hóa nào bên trong nó không?Truy vấn Sqlite3 thực sự chậm theo iOS 8.2
Cảm ơn sự giúp đỡ của bạn!
- (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;
}
Xin chào, bạn có tìm thấy giải pháp chính xác cho câu trả lời này không? – Hariprasad