2

我有这样的代码:

- (NSArray *)executeSqlWithParameters:(NSString *)sql, ...
{

    va_list argumentList;
    va_start(argumentList, sql);

    NSMutableArray *arguments = [NSMutableArray array];

    id argument;
    while(argument == va_arg(argumentList, id))
    {
        [arguments addObject:argument];
    }
    va_end(argumentList);

    NSLog(@"arguments %@",arguments); // here i have an empty array

    return [self executeSql:sql withParameters:arguments];

}

我这样调用这个方法:

NSArray *results = [self.dataBaseManager executeSqlWithParameters:@"SELECT * from InfoTable number = ?",[NSNumber numberWithInt:5], nil];

但是当我在 executeSqlWithParameters 方法中记录参数数组时,它是空的。我做错了什么?谢谢

4

1 回答 1

7

你只是在这一行有一个小错字:

while(argument == va_arg(argumentList, id))

你想要的是:

while(argument = va_arg(argumentList, id))

或者等效地,为了避免编译器警告:

while ((argument = va_arg(argumentList, id)) != nil)
于 2013-05-25T14:45:46.990 回答