const char *sql = [[[NSString alloc] initWithFormat:@"Select * from table1 where id = '%@' limit 1",str] UTF8String];
if(sqlite3_prepare_v2(database, sql, -1, &detailStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating detail view statement. '%s'", sqlite3_errmsg(database));
NSMutableArray *keys = [NSMutableArray array];
NSMutableArray *objects = [NSMutableArray array];
NSString *keyText = [NSString alloc];
while(sqlite3_step(detailStmt) == SQLITE_ROW) {
for (int x=1; x<=74;x++)
{
switch (x) {
case 1:
keyText = @"Title";
break;
case 2:
keyText = @"Year";
break;
case 3:
keyText = @"Reference";
break;
case 4:
keyText = @"Category";
break;
default:
break;
}
if([[NSString stringWithUTF8String:(char *)sqlite3_column_text(detailStmt, x)] isEqualToString:@""]){
//Don't add empty fields to the array
} else {
[objects addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(detailStmt, x)]];
[keys addObject:keyText];
}
}
}
appDelegate.itemList = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
sqlite3_reset(detailStmt);
Приведенный выше код получает некоторую информацию из базы данных SQLite, есть 74 поля информации, затем я добавляю ключи (имя поля) в массив 'keys', а содержимое поля - в массив 'objects' , Затем я добавляю ключи и объекты в NSDictionary, затем я могу просмотреть это в виде таблицы следующим образом:
NSArray* allKeys = [appDelegate.itemList allKeys];
cell.titleLbl.text = [allKeys objectAtIndex:indexPath.row];
cell.descLbl.text = [appDelegate.itemList objectForKey:[allKeys objectAtIndex:indexPath.row]];
Мне нужно упорядочить ключи с соответствующими объектами в определенном порядке для отображения в моем табличном представлении, порядок, в котором поля находятся в базе данных, не обязательно должен отображаться так, как я бы хотел, чтобы они отображались. Например, я хочу показать Category, Reference, Title, затем Year в моем табличном представлении - поэтому я должен добавить их в мой NSDictionary в том порядке, который я предполагаю. Как лучше всего это сделать?