可能的FMDatabase/FMResultSet错误

问题描述:

即使我很少遇到FMDatabase的问题,我今天注意到一些奇怪的行为,并想知道这是一个错误还是由于我自己的错误。可能的FMDatabase/FMResultSet错误

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]语句为安全起见,先while循环利用,但这种返回NO,即使结果集确实含有结果。

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

我在这里错过了什么吗?

您必须先调用[resultSet next],然后才能调用[resultSet resultDict],否则结果中的指针位于第一行之前。这也是为什么你的循环工作,但你hasAnotherRow检查不。

+0

谢谢@Greg M.!他为什么不接受答案?这是绝对正确的。 – 2012-04-20 08:42:16