【发布时间】:2019-07-31 07:58:14
【问题描述】:
我有一个简单的应用程序,我通过这种方式从存储在我自己的服务器中的 JSON 文件中获取数据 - 我正在使用 SwiftyJSON:
func queryData(_ fileName:String) {
guard let url = URL(string: JSON_PATH + fileName + ".json") else {return} // JSON_PATH + fileName + ".json" is the complete path to my db.json file (see below)
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data, error == nil else {
self.simpleAlert(error!.localizedDescription)
return
}
let jsonData = try! JSON(data: dataResponse)
print("ARRAY: \(jsonData)")
}
task.resume()
}
这是我的db.json 文件:
[
{
"objID":"GNoW3vszYz",
"string":"First (1) string",
"pointer":["pointer","yN76TF43i8"],
"boolean":true,
"number":123,
"fileURL":"https://example.com/uploads/01.jpg",
"array":["aaa","bbb","ccc"]
},
{
"objID":"yN76TF43lD",
"string":"Second (2) string",
"pointer":["pointer","GNoN3vsz2I"],
"boolean":false,
"number":12.55,
"fileURL":"https://example.com/uploads/02.jpg",
"array":["aaa","eee","fff"]
}
]
问题是,如果我手动编辑我的 db.json 文件,假设我将 "number":123, 更改为 "number":5555, 保存并再次将其上传到我的服务器并再次运行我的应用程序,控制台日志会显示相同的 JSON数据如上,就像我什么都没改变一样。
我已尝试杀死该应用程序并使用 Xcode 再次运行 2-3 次,但没有成功,我可以获得更新的 JSON 文件数据的唯一方法是删除该应用程序并通过 Xcode 重新安装.
有没有办法始终使用URLSessionDataTask 获取更新的 JSON 数据?
谢谢。
【问题讨论】:
-
如果您的服务器启用了“Cache-Control”,URLSession 将缓存数据。创建 URLSessionConfiguration 并将其 requestCachePolicy 设置为 reloadIgnoringLocalCacheData。检查此打印响应并检查“Cache-Control”的值
标签: ios json swift database nsurlsessiondatatask