我從一個URL獲取JSON數據這種方法:NSUrlsession解僱,網址不叫,但導致
-(void)getJsonResponse:(NSString *)urlStr success:(void (^)(NSDictionary *responseDict))success failure:(void(^)(NSError* error))failure
{
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//NSLog(@"%@",data);
if (error) {
failure(error);
NSLog(@"Error: %@", [error localizedDescription]);
}
else {
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//NSLog(@"%@",json);
success(json);
}
}];
[dataTask resume];
}
在myViewController,viewWillAppear中我稱這種方法爲這樣:
NSString * URLString = @"my.valid.url";
[self getJsonResponse:URLString success:^(NSDictionary *result) {
//here some code when succesful
} failure:^(NSError *error) {
NSLog(@"Something terrible happened");
}];
}
那工作正常,但只有一次:
當我離開myViewController,並再次輸入它時,
- viewWillAppear中被調用,subsequentially
- [自我getJsonResponse:......被稱爲
- 我的成功塊代碼被執行
但是:監控網絡活動與查爾斯,我注意到,沒有對my.valid.url進行調用。
什麼給?我應該使共享會話失效嗎?如果是這樣,何時?
不相關,但(可變!)'URLRequest'根本不使用/需要。使用'dataTaskWithURL'並傳遞URL。 – vadian
@vadian:你說得對。我拿出一些東西讓事情更具可讀性。 – Sjakelien