我有一个本地json文件,可以按如下方式阅读我所做的:
在此处输入图像描述
func readJson() {
if let path = Bundle.main.path(forResource: "text", ofType: "json") {
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
let decoder = JSONDecoder()
let model = try decoder.decode(Textos.self, from: data)
print("model", model)
} catch {
print("error file")
}
} else {
print("error")
}
}
读取功能工作正常,但是当我想更新文件时,它不会更新。
func saveJson(response: Textos) {
do {
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(response) //all fine with jsonData here
let json = String(data: jsonData, encoding: String.Encoding.utf8)
let data = Data(json!.utf8)
if let path = Bundle.main.path(forResource: "text", ofType: "json") {
do {
try? data.write(to: URL(fileURLWithPath: path)) **//not Working**
readJson()
}
}
} catch {
print(error)
}
}
saveJson 函数在模拟器中运行良好,但当我使用设备对其进行测试时,它不起作用。
简短回答:
您将永远无法保存。
let path = Bundle.main.path(forResource: "text", ofType: "json")
该文件位于应用程序捆绑包中。访问权限是只读的。
可以保存到文档或缓存文件夹。
let documentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
(示例如何请求用户文档文件夹的路径。此文件夹是每个应用程序沙箱的。