json - 快速重新加载新的 JSON 数据
问题描述
我正在快速开展一个项目,我需要将数据写入 JSON 文件,打印该数据,并能够在数据到达时添加更多数据。目前,我可以写入 JSON 并显示第一个输入的数据,但是在我添加更多并尝试再次显示它之后,它只会打印新数据。
我正在使用 textView 来显示数据并使用textFields
和textView
获取数据。
下面的代码应该可以让您更好地理解。
@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 ")
}
}
}
}
}
'''
解决方案
推荐阅读
- expression - Prometheus Alertmanager Expression Problem/Questions(s) 关于列表
- mongoose - Mongoose:如何将新值推送到特定键中?
- reactjs - MUI v5 - 将组件名称添加到“样式”类名称?
- asciidoc - 标题区域中的 Asciidoc 长章节标题与公司徽标重叠
- r - 如何在 ggplot 中创建具有已知中心、尺寸和方向的矩形
- xamarin - Xamarin.iOS NavigationController 在重新访问页面两次后为空
- python - pywhatkit 打开相同的 youtube 视频
- webpack - 如何使用 webpack 和自定义 html 模板来提供 svg sprites
- fluentvalidation - 如何在流畅的验证中使用扩展方法制作自定义错误消息
- javascript - 反应数据获取使浏览器在 100 行后变慢