我有两个处理读写JSON数据的功能。
func websiteToDisk() {
print("Getting information from website")
let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let jsonFile = documentDirectoryURL.appendingPathComponent("jsonPractice").appendingPathExtension("json")
let toWrite: [String] = ["A", "B", "C"]
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(toWrite)
try jsonData.write(to: jsonFile)
}
func diskToLocalVar() {
print("Getting information from disk and putting it in a local variable")
let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let jsonFile = documentDirectoryURL.appendingPathComponent("jsonPractice").appendingPathExtension("json")
let jsonDecoder = JSONDecoder()
let savedJSONData = try Data(contentsOf: jsonFile)
let jsonDecoded = try jsonDecoder.decode([String].self, from: savedJSONData)
}
websiteToDisk应该将一个简单的数组写入json文件,而diskToLocalVar应该读取该数据。由于某些原因,每个函数的最后两行都有一个“从此处引发的错误未处理”错误。我不确定为什么会这样,因为我很确定自己没有违反任何JSONEncoder.encode约束。我知道我要编码的是可编码的,因为它只是一个字符串数组。