尽管我很少遇到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"]);
}


奇怪的是,这一切都很好,但是我想玩起来很安全,并且使用[db hasAnotherRow]的if语句在while循环之前,但是即使结果集包含结果,它也不会返回。

当我将结果字典(使用FMResultSet的resultDict方法)记录到控制台时,我从FMResultSet中收到一条警告,内容为“警告:此集合中似乎没有列。”即使我可以在while循环中使用它们。

我在这里想念什么吗?

最佳答案

您必须先调用[resultSet next],然后才能调用[resultSet resultDict],否则结果中的指针在第一行之前。这也是循环有效但对hasAnotherRow进行检查的原因。

07-28 06:29