看起来很傻,但我无法弄清楚为什么会出现错误:
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://api.vk.com/method/newsfeed.get?access_token=%@", self.secret]];
并且XCode警告我“红色”错误 - 方法调用预期1的参数太多,有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访问将阻止应用程序直到完成,最好使用不阻止的异步方法。