FMDB 结果集到字典中

Posted

技术标签:

【中文标题】FMDB 结果集到字典中【英文标题】:FMDB resultset into dictionary 【发布时间】:2012-03-13 09:16:49 【问题描述】:

有没有一种简单的方法可以轻松地将executeQuery:SELECT * ... 的 FMDB 结果放入字典中?

FMResultSet *appointmentResults = [[DataClass getDB] executeQuery:@"SELECT * FROM Appointments WHERE date = ?",currDateString];
while ([appointmentResults next]) 
    //Create dictionary
    //Add dictionary to array for later use

我想知道是否有一种方法可以让字典键成为列名,值成为列值。最好不必循环遍历 while 内的每一行。

【问题讨论】:

【参考方案1】:

是的:

NSMutableArray *results = [NSMutableArray array];

FMResultSet *appointmentResults = [[DataClass getDB] executeQuery:@"SELECT * FROM Appointments WHERE date = ?",currDateString];
while ([appointmentResults next]) 
  [results addObject:[appointmentResults resultDictionary]];

-resultDictionaryFMResultSet 的内置方法,它将当前元组转换为 NSDictionary,以列名为键。

【讨论】:

太棒了!你从哪里得到这个的?查看 FMDB 文档 resultDict 不在那里。 @jostster 它在FMResultSet.h -resultDict 已弃用,请改用-resultDictionary @lucianf 这将如何处理包含来自两个表的相似列名的连接查询? @ShaggyD 查看the code,在这种情况下您将无法使用resultDictionary - 只需遍历列索引,因为您知道按您使用的顺序期望列连接子句。 Further confirmation.

以上是关于FMDB 结果集到字典中的主要内容,如果未能解决你的问题,请参考以下文章

结果集到分页

我无法捕获 FMDB 空结果集

执行 [FMDatabaseQueue inDatabase:] 后出现错误,因为周围至少有一个打开的结果集?

可以通过查询结果获取结果集行数吗?

ssm mapper.xml讲解

如何保存结果集并在 TableView 中显示所有数据