方法调用预期为1的参数太多,有2个

时间:2016-01-17 12:21:19

标签: ios objective-c

看起来很傻,但我无法弄清楚为什么会出现错误:

 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://api.vk.com/method/newsfeed.get?access_token=%@", self.secret]];

并且XCode警告我“红色”错误 - 方法调用预期1的参数太多,有2个。但我没有第二个"%@"符号,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:3)

[{
    date: "2016-01-29"
    done: false
    task: "hello world"
},
{
    date: "2016-01-29"
    done: false
    task: "hello world"
}]

您应该使用 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.vk.com/method/newsfeed.get?access_token=%@", self.secret]]];

创建格式化字符串

答案 1 :(得分:3)

将语句分解为中间词可以精确定位错误,并且开发人员更容易理解。应该没有性能损失,编译器将结合语句。

还使用提供错误反馈的API版本。

NSString *urlString = [NSString stringWithFormat:@"https://api.vk.com/method/newsfeed.get?access_token=%@", self.secret];
NSURL *url = [NSURL URLWithString: urlString];

NSError *error;
NSData *data = [NSData dataWithContentsOfURL:url options:0 error:&error];
if (data) {
    // process data
}
else
    NSLog(@"data error: %@", error);
    // handle error
}

是的,错误处理很乱并且PITA确实需要完成,这是软件开发的一部分。

注意:此Web访问将阻止应用程序直到完成,最好使用不阻止的异步方法。