我正在尝试从table中获取和显示内容。目前我正在运行查询并使用NSMutableDictionary
存储这些id和类别名称,这样可以正常工作。
但是当我将内容存储到NSMutableDictionary中时,我遇到了一个问题,即订单被更改。当搜索此问题时,似乎这是NSMutableDictionary的默认行为。
我不确定以及如何使用以及存储密钥对值的用途。
请告诉我如何克服这个问题
感谢您停止......
//====================================================================
- ( NSMutableDictionary * ) getDataToDisplayTierOne:(NSString*)dbPath{
//====================================================================
NSMutableDictionary *aTierOneTemplateData = [[NSMutableDictionary alloc]init];
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
const char *sql_query_stmt = "select * from main_categories";
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql_query_stmt, -1, &selectstmt, NULL) == SQLITE_OK)
{
while(sqlite3_step(selectstmt) == SQLITE_ROW)
{
NSString *aValue = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(selectstmt, 1)];
NSString *aId = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(selectstmt, 0)];
[aTierOneTemplateData setObject:aId forKey:aValue];
[aValue release];
[aId release];
}
}
sqlite3_finalize(selectstmt);
}
sqlite3_close(database);
return aTierOneTemplateData;
}
注意: - 我理解使用nsmutabledictionery的限制 所以我期待你的建议,我怎样才能克服/获取id, 其他方面的价值。请建议
更新了
例如
Apple 1 橙色2 木瓜3
其实我希望该列表在我的uitableview上显示
苹果 橙子 木瓜
点击每个单元格时,我想拥有其id值 例如,我点击Orange,现在我希望将id值设为2
你能告诉我如何迭代一系列dictionery
答案 0 :(得分:1)
NSDictionary和NSSet都不是有序集合。如果您想订购,请使用NSArray。如果要强制排序,请将对象添加到具有自己的索引属性的无序集合中。
答案 1 :(得分:1)
使用NSMutableArray
代替NSMutableDictionary
。
更改声明
NSMutableDictionary *aTierOneTemplateData = [[NSMutableDictionary alloc]init];
到
NSMutableArray *aTierOneTemplateList = [[NSMutableArray alloc]init];
将abjects添加到数组中,
[aTierOneTemplateList addObject:aId];
并返回NSMutableArray,
return aTierOneTemplateList;
修改强>
如果您按如下方式修改while循环,您将获得具有相同顺序的NSDictionary
数组。
NSString *aValue = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(selectstmt, 1)];
NSString *aId = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(selectstmt, 0)];
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:aValue,@"value",aId,@"key", nil];
[aTierOneTemplateList addObject:dict];
[dict release];
[aValue release];
[aId release];
<强> EDIT2:强>
现在考虑在tableviewcontroller中,你有NSDictionary
的数组(比如aTierOneTemplateList
)。
在cellForRowAtIndexPath
方法中,
NSDictionary *dict = [aTierOneTemplateList objectAtIndex:indexPath.row];
NSString *key = [dict objectForKey:@"key"];
NSString *value = [dict objectForKey:@"value"];
同样在didSelectRowAtIndexPath
方法中。