我遇到了一个奇怪的bug,它突然出现了。我快要完成我的应用程序并进行测试时,我发现数据没有被更新。数据库已经更新了,我可以直接访问URL,并正确地从服务器返回数据,但是当我在Swift中打印数据时,它没有改变。
大多数情况下,重新运行应用程序后数据会更改。
我正在使用Alamofire,但我也尝试了另外两种方法:
并且。
大多数情况下,重新运行应用程序后数据会更改。
我正在使用Alamofire,但我也尝试了另外两种方法:
let url = NSURL(string: "http://www.stackoverflow.com")
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
并且。
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
所有三个都输出相同的数据。
我猜这是 Swift 中的缓存问题,但我没有设置任何东西告诉 Swift 缓存数据,而且它在过去几周一直正常工作。
我今天唯一做的事情就是为我的项目创建一个 Git 仓库。
有人知道可能是什么原因吗?
*编辑:
使用 Abhi Beckert 的答案,我尝试了以下操作:
符合代理 NSURLConnectionDelegate
添加:
func connection(connection: NSURLConnection, willCacheResponse cachedResponse: NSCachedURLResponse) -> NSCachedURLResponse?
{
return nil // never cache anything. ever.
}
然后进行调用:
let url:NSURL! = NSURL(string: "http://coffee.datausadev.com/api/getCoffeeBrands")
let request = NSURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 60)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
这种方法仍然没有生效。