传递给调用的参数,该参数不带Data(contentOf :)

时间:2018-11-20 10:09:20

标签: arrays json swift decode

我正在尝试对其速度为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)
    }()
}

2 个答案:

答案 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',否则代码应该安全运行,并且如果文件存在或不存在也不会导致崩溃

}()