我有这样的代码:
- (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/