iOS Swift - URLSessionDataTask 在刷新时无法获取更新的 JSON 数据

xsc*_*der 1 database json ios swift nsurlsessiondatatask

我有一个简单的应用程序,我以这种方式从存储在我自己的服务器中的 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()
    }
Run Code Online (Sandbox Code Playgroud)



这是我的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"]
    }
]
Run Code Online (Sandbox Code Playgroud)



问题是,如果我手动编辑我的db.json文件,假设我更改"number":123,"number":5555,保存并在服务器中再次上传它并再次运行我的应用程序,控制台日志会显示与上面相同的 JSON 数据,就像我没有更改任何内容一样。


我尝试终止该应用程序并使用 Xcode 再次运行它 2-3 次,但没有成功,我获取更新的 JSON 文件数据的唯一方法是删除该应用程序并通过 Xcode 再次安装它。

有没有办法始终获取更新的 JSON 数据URLSessionDataTask
谢谢。

F22*_*ing 6

这是由于URLSession缓存了来自服务器的数据,这通常是在来自服务器的 json 文件的标头中发送的。

如果您无法在服务器端更改任何内容,那么您可以使用此处.ephemeral的苹果文档

使用此代码

let configuration = URLSessionConfiguration.ephemeral
let session = URLSession(configuration: configuration)
Run Code Online (Sandbox Code Playgroud)

.ephemeral用于仅存储在 RAM 中的数据,不会将任何内容存储在磁盘上