将FMResultSet转换为NSMutableArray?

时间:2011-12-09 17:52:16

标签: objective-c ios fmdb

我正在尝试使用FMDB,如果我可以将FMResultSet变成NSMutableArray,它看起来对我来说会很完美。

我将如何做到这一点?

2 个答案:

答案 0 :(得分:13)

你可以试试这个。

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];

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

答案 1 :(得分:9)

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类,它表示数据库表中的记录。当然,你也可以使用字典。