【发布时间】:2011-07-16 22:43:20
【问题描述】:
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]];
我需要做的是以特定顺序对具有相应对象的键进行排序,以便在我的表视图中显示,字段在数据库中的顺序不一定是我希望它们显示的方式。例如,我想在我的表格视图中显示类别、参考、标题,然后是年份——所以我应该按照我假设的顺序将它们添加到我的 NSDictionary 中。最好的方法是什么?
【问题讨论】:
-
@DaveDeLong:受虐狂是新的黑人。看看所有玩矮人要塞的人。
标签: objective-c nsmutablearray nsdictionary