Возможная ошибка FMDatabase / FMResultSet - PullRequest
2 голосов
/ 23 мая 2011

Несмотря на то, что у меня редко бывают проблемы с FMDatabase, сегодня я заметил странное поведение и задавался вопросом, является ли это ошибкой или моей собственной ошибкой.

NSString *query = [NSString stringWithFormat:@"SELECT * FROM TABLE_A WHERE modelId = %lu", modelId];
FMResultSet *resultSet = [db executeQuery:query];

while ([resultSetIPTCProperties next]) {
    NSLog(@"MODEL ID: %lu", [resultSetIPTCProperties intForColumn:@"stringId"]);
}

Странно то, что все это работает нормально, но я хотел быть осторожным и предшествовать циклу while с помощью оператора if, используя [db hasAnotherRow], но это возвращает NO, даже если результирующий набор действительно содержит результаты.

Когда я записываю полученный словарь (используя метод resultDict FMResultSet) на консоль, я получаю предупреждение от FMResultSet, в котором говорится: «Предупреждение: в этом наборе нет столбцов». хотя я могу использовать их в цикле while.

Я что-то здесь упускаю?

1 Ответ

15 голосов
/ 07 января 2012

Вы должны вызвать [resultSet next], прежде чем сможете вызвать [resultSet resultDict], в противном случае указатель в результате находится перед первой строкой.По этой же причине ваш цикл работает, а проверка hasAnotherRow - нет.

...