这里我从网址获取数据。
我在我的视图控制器的头文件中声明了我的NSString
@property NSString *contentsOfUrl;
然后我获取网址的内容并将其分配给此字符串
-(void)press
{
NSURLSession *session1 = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session1 dataTaskWithURL:[NSURL URLWithString:@"http://api.lmiforall.org.uk/api/v1/soc/code/2222"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (((NSHTTPURLResponse*) response).statusCode == 200) {
if (data) {
contentsOfUrl = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
}
}] resume];
NSLog(@"%@", contentsOfUrl);
}
由于某种原因,我的变量为null。但是,当我将NSLog放在if语句中时,它具有正确的数据。
答案 0 :(得分:1)
这是因为contentsOfUrl是在称为异步的完成处理程序内分配的。
所以你的阻止:
^(NSData *data, NSURLResponse *response, NSError *error) {
if (((NSHTTPURLResponse*) response).statusCode == 200) {
if (data) {
contentsOfUrl = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
}
}
在NSLog行之后被调用。 如果你想对这些数据做些什么,请从块内部进行操作