有点新的快速并且没有使用swift 4找到解决此错误的方法。
使用JSONDecoder功能时,我收到的错误是“由于格式不正确而无法读取数据”。'我通过验证器运行了我的JSON,并说它一切正常,所以我只是不明白为什么会发生这种错误
我的解码代码如下:
import UIKit
class inputscreen: UIViewController {
// the JSONData.php is where the data is being converted into JSON using PhP
final let url = URL(string: "JSONData.php")
override func viewDidLoad() {
super.viewDidLoad()
downloadJson()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func downloadJson() {
guard let downloadURL = url else {return }
URLSession.shared.dataTask(with: downloadURL) {data, urlResponse, error in
guard let data = data, error == nil, urlResponse != nil else {
print("something went wrong")
return
}
// print(data)
print("downloaded")
do {
// this is where the error is happening, everything else is getting through my checks.
let decoder = JSONDecoder()
let variables = try decoder.decode(Variables.self, from:data)
print(variables.variables[0].TblStaffID)
print("success")
} catch {
print(error.localizedDescription)
}
}.resume()
}
}
在JSON中我已将其转换为UTF8,因此我不会认为错误来自哪里
我在不同的文件中有这个结构,如下所示:
import Foundation
import UIKit
class Variables: Codable{
let variables: [Variable]
init(variables: [Variable]){
self.variables = variables
}
}
struct Variable: Codable {
let TblStaffID: Int
let User_code: String
let Title: String
let PreName: String
let Surname: String
init(TblStaffID: Int, User_code: String, Title: String, PreName: String, Surname: String){
self.TblStaffID = TblStaffID
self.User_code = User_code
self.Title = Title
self.PreName = PreName
self.Surname = Surname
}
}
对此事的任何和所有帮助都将不胜感激!
答案 0 :(得分:1)
确保将日期格式转换为TimeIntervals或String