首页 > 解决方案 > 快速重新加载新的 JSON 数据

问题描述

我正在快速开展一个项目,我需要将数据写入 JSON 文件,打印该数据,并能够在数据到达时添加更多数据。目前,我可以写入 JSON 并显示第一个输入的数据,但是在我添加更多并尝试再次显示它之后,它只会打印新数据。

我正在使用 textView 来显示数据并使用textFieldstextView获取数据。

下面的代码应该可以让您更好地理解。


 @IBAction func addWords(_ sender: UIButton) {
        let data: [String:String] = [
            "Name": nameField.text ?? "N/A",
            "Definition": defView.text ?? "N/A",
            "Part of Speech": posField.text ?? "N/A"
        ]
        let fileUrl = Bundle.main.url(forResource: "data", withExtension: "json")!
        if let jsonData = try? JSONSerialization.data(withJSONObject: data, options: []) {
            try! jsonData.write(to: fileUrl)
            nameField.text = ""
            defView.text = ""
            posField.text = ""
        } else {
            print("Failed to save")
        }
    }

    @IBAction func loadData(_ sender: UIButton) {
        let fileUrl = Bundle.main.url(forResource: "data", withExtension: "json")!
        let responseData: Data? = try! Data(contentsOf: fileUrl)
        if let responseData = responseData {
            let json: Any? = try? JSONSerialization.jsonObject(with: responseData, options: [])
            if let json = json {
                let dictionary: [String: Any]? = json as? [String: Any]
                if let dictionary = dictionary {
                    for names in dictionary {
                        let name: String = dictionary["Name"] as! String
                        let definition: String = dictionary["Definition"] as! String
                        let pos: String = dictionary["Part of Speech"] as! String
                        print(name)
                        textView.text = ("Name: \(name) (\(pos))\n Definition: \(definition)\n ")
                    }
                }
            }
        }
    }
'''

标签: jsonswift

解决方案


推荐阅读