我有这样的代码:

- (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方法中记录arguments数组时,它是空的。
我做错了什么?谢谢

最佳答案

您在此行上只有一个小错字:

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


您想要的是:

while(argument = va_arg(argumentList, id))


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

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

关于objective-c - cocoa 中的变量参数列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16750547/

10-13 07:43