我正在尝试对其速度为4.2的json
数据进行编码和解码,但正在遇到此错误Argument passed to call that takes no arguments
不确定做错了什么,尝试过在堆栈中找到有关错误的信息,没有成功。
这是我的代码
传递给调用的参数不带参数
import Foundation
struct Section : Codable {
var title : String
var caption : String
var body : String
var imageName : String
var publishDate : Date
enum CodingKeys : String, CodingKey {
case title, caption, body
case imageName = "image"
case publishDate = "publish_date"
}
}
class ContentAPI {
static var shared : ContentAPI = ContentAPI()
lazy var sections : Array<Section> = {
let url = Bundle.main.url(forResource: "myFile", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
return try! decoder.decode(Array<Section>.self, from: data)
}()
}
答案 0 :(得分:0)
基本上,该代码是正确的。是否有Data
扩展名和其他初始化程序?
由于该文件位于分发包中,并且无法在运行时更改,因此可以强制解开所有值。代码一定不能崩溃。
lazy var sections : Array<Section> = {
let url = Bundle.main.url(forResource: "myFile", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
return try! decoder.decode(Array<Section>.self, from: data)
}()
答案 1 :(得分:0)
您的主要问题是您忘记了结尾的'earliest'
,否则代码应该安全运行,并且如果文件存在或不存在也不会导致崩溃
}()