2015-01-08 62 views
0

我需要檢查一個網站是否可以加載它之前。我是iOS開發新手,但這是我實施的方法來發現響應。檢查沒有緩存的HTTP狀態代碼

var url = NSURL(string: "http://www.apple.com") 

    var task = NSURLSession.sharedSession().dataTaskWithURL(url!) { 
     data, response, error in 

     println(data) 

     var httpResponse = response as? NSHTTPURLResponse 

     println(httpResponse) 
    } 
    task.resume() 

它的工作原理!但問題是,響應來自緩存...所以結果是: 如果我正在檢查一個文件是否存在,並在那一刻我檢查它存在 - >對於應用程序,它將始終存在,因爲它是存儲在緩存中...所以,如果我刪除文件,然後我提出請求...它總是會給我回應200而不是404.

Infact如果我插入這行代碼(它刪除緩存!)在發出請求之前,它的工作原理就像它應該工作一樣,並且如果網站或文件存在,它總是會檢查真實情況!

NSURLCache.sharedURLCache().removeAllCachedResponses() 

所以...我怎麼能解決斯威夫特這個問題呢?......非常感謝你

+0

你看過Apple的Reachability示例代碼嗎? – Abizern

回答

1

您可以通過使用一個新的URL會話實例設置無緩存策略。

創建一個屬性併爲其設置一個新的NSURLSession實例。

var urlSession : NSURLSession! 

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData; 
self.urlSession = NSURLSession(configuration: configuration) 

使用此URLSession屬性來獲取您的數據。

var url = NSURL(string: "http://www.apple.com") 

var task = self.urlSession.dataTaskWithURL(url!) { 
     data, response, error in 
      // Your code 
} 
task.resume() 
+1

很棒!!!!!!!!!!! – ernestocattaneo