将 FMResultSet 转换为 NSMutableArray?

Posted

技术标签:

【中文标题】将 FMResultSet 转换为 NSMutableArray?【英文标题】:Convert FMResultSet to NSMutableArray? 【发布时间】:2011-12-09 17:52:16 【问题描述】:

我正在尝试 FMDB,如果我可以将我的 FMResultSet 转换为 NSMutableArray,它看起来对我来说非常适合。

我将如何做到这一点?

【问题讨论】:

【参考方案1】:

你可以试试这个。

NSMutableArray *array = [NSMutableArray array];
FMDatabase *database = [FMDatabase databaseWithPath:databasePath];

[database open];

FMResultSet *results = [database executeQuery:@"SELECT * FROM Table"];
while ([results next]) 
    [array addObject:[results resultDictionary]];


NSLog(@"%@", array);

[database close];

我在项目中使用它,它工作得很好。

【讨论】:

【参考方案2】:

sample code for FMDB 非常清楚地说明了FMResultSet 的工作原理。您可以通过在每次迭代中调用next 方法来迭代结果集中的行。在循环内部,您使用数据访问器方法检索当前行的每列数据。如果你想把它变成一个数组,你必须手动完成。像这样:

NSMutableArray *array = [NSMutableArray array];
FMResultSet *rs = [db executeQuery:@"select * from table"];
while ([rs next]) 
    // Get the column data for this record and put it into a custom Record object
    int col1 = [rs intForColumn:@"col1"];
    int col2 = [rs intForColumn:@"col2"];
    Record *record = [Record recordWithCol1:col1 col2:col2];
    [array addObject:record];

[rs close];

如您所见,我假设您已经构建了一个自定义 Record 类,该类表示您的数据库表中的一条记录。当然,您也可以使用字典。

【讨论】:

谢谢,这可行,但会增加我的应用程序的大量开销,但很高兴知道这一点

以上是关于将 FMResultSet 转换为 NSMutableArray?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以有 [FMResultSet previous] 和/或 [FMResultSet goRecord:1]?

如何基于公共列合并两个 FMResultSet?

如何在 FMResultSet 中传递两个查询

可能的 FMDatabase/FMResultSet 错误

sqlite3 和 fmdb 嵌套 FMResultSet 是可能的吗?

uitableview 中的多个原型单元,带有部分