Конвертировать FMResultSet в NSMutableArray? - PullRequest
4 голосов
/ 09 декабря 2011

Я пытаюсь использовать FMDB, и, похоже, он отлично сработает для меня, ЕСЛИ я смогу превратить свой FMResultSet в NSMutableArray.

Как мне это сделать?

Ответы [ 2 ]

13 голосов
/ 01 февраля 2013

Вы можете попробовать это.

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

Я использую это в проекте, и он работает просто отлично.

9 голосов
/ 09 декабря 2011

Пример кода для 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, который представляет запись в вашей таблице базы данных. Конечно, вы также можете работать со словарем.

...