NSURLSession.sharedSession在运行时显示旧数据?

时间:2015-08-05 00:39:39

标签: ios swift nsurlsession

我遇到了非常奇怪的问题。

我正在使用session.DataTaskWithURL:

    let task = session.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
        if (error != nil) {

            return completionHandler(nil, error)

        } else {
            if let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSDictionary {


                if let uDataArray = jsonResult["data"] as? [NSDictionary] {



        println(uDataArray)


} 
      return completionHandler(self.dataArray, nil)
    })
    task.resume()

除了jsonResult显示旧数据外,一切看起来都很棒。例如,如果我从API端点删除整个数组,则更改不会反映在jsonResult属性中。永远。就像数据被缓存一样。

我使用各种不同的程序来验证后端的更改,但应用程序不会重新加载新数据。

如果我删除了该应用,请再次运行此session.DataTaskWithURL ...它会提取当前服务器信息。

是否有自动行为我不理解,如果有,我如何阻止它缓存数据?

1 个答案:

答案 0 :(得分:2)

您是否已清除应用程序的缓存,因为会话将其存储在Cookie中,如果他再次获得相同的URL,则会显示Cookie数据,这就是您获取旧数据的原因。因此,如果清除缓存,则始终会获得存储在服务器上的最新数据。

let request = NSURLRequest(URL: url, cachePolicy:
    NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData,
    timeoutInterval: 10.0)