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

You just have a small typo on this line:

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

What you want is:

while(argument = va_arg(argumentList, id))

Or equivalently, to avoid a compiler warning:

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