使用 Codable 时出错 - Swift

Errors when using Codable - Swift

我正在使用 Codable 尝试 Encode JSON 到模型,但出现两个错误。 类型 'KeyedEncodingContainer' 的值没有成员 'encoder'

这是我的代码:

import UIKit

struct NewCustomer : Codable {

    var firstName :String
    var lastName :String


    private enum CodingKeys : String, CodingKey {
        case firstName
        case lastName
    }

    func encode(to encoder :Encoder) throws {

        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encoder(self.firstName, forKey: .firstName)  // error here
        try container.encoder(self.lastName, forKey: .lastName)  // error here
    }
}

let customer = NewCustomer(firstName: "Jake", lastName: "Reynolds")

let encodedCustomerJSON = try! 
JSONEncoder().encode(customer)

print(encodedCustomerJSON)

print(String(data: encodedCustomerJSON, encoding: .utf8)!)

在出现错误的两行上将 encoder 更改为 encode。请注意,上面的行(即 var container...)将保留 encoder.

try container.encode(self.firstName, forKey: .firstName)
try container.encode(self.lastName, forKey: .lastName)

如前所述,这是一个错字 encodeencoder:

try container.encode(...

实际上在这种情况下您根本不需要指定 CodingKeys 和编码方法,这就足够了:

struct NewCustomer : Codable {
    var firstName, lastName : String
}