4

FMDBを試していますが、FMResultSetをNSMutableArrayに変換できれば、完全に機能するようです。

どうすればこれを達成できますか?

4

2 に答える 2

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

私はこれをプロジェクトで使用していますが、問題なく機能しています。

于 2013-02-01T19:47:07.533 に答える
9

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ご覧のとおり、データベーステーブルのレコードを表すカスタムクラスを作成したと想定しています。もちろん、辞書を使って作業することもできます。

于 2011-12-09T18:03:56.880 に答える