2017-05-28 26 views
0

我從一個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進行調用。

什麼給?我應該使共享會話失效嗎?如果是這樣,何時?

+0

不相關,但(可變!)'URLRequest'根本不使用/需要。使用'dataTaskWithURL'並傳遞URL。 – vadian

+0

@vadian:你說得對。我拿出一些東西讓事情更具可讀性。 – Sjakelien

回答

1

集NSURLSessionConfiguration chachePolicyNSURLRequestReloadIgnoringCacheData,然後再試一次。瞭解Http緩存的好處是resource。閱讀蘋果指南中給出的文檔。

NSURLSessionConfiguration *config = NSURLSessionConfiguration.defaultSessionConfiguration; 
config.requestCachePolicy = NSURLRequestReloadIgnoringCacheData; 
NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; 
+0

非常感謝。非常重要的知識。我不得不切換第2行和第3行。 – Sjakelien

+0

已經給出瞭解決方案? – suhit

+0

對不起,我打的橙色箭頭向上,而不是綠色對勾... – Sjakelien