il est conforme au protocole codable, je ne peux pas sauter facilement propriété facultative de classe non codableIgnorer les propriétés non codable en option dans l'objet codable
En Ride
struct nous voulons ignorer encodage et décodage de driver
propriété , et il suffit de laisser nil
lors du décodage
struct Ride: Codable {
public var number: String
public var passenger: Passenger? // Codable conforming
public var driver: Driver? // NSObject subclass, doesn't conform to Codable
enum CodingKeys: String, CodingKey {
case number
case passenger
}
}
Dans ce cas, je reçois une erreur de compilation
Type « Driver » ne se conforme pas au protocole « décodables »
Jusqu'à présent, la seule solution que je suis venu avec, est de Coder et Decode manuellement en fournissant des méthodes suivantes:
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
number = try? values.decode(String.self, forKey: .number)
passenger = try? values.decode(Passenger.self, forKey: .passenger)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(number, forKey: .number)
try container.encode(passenger, forKey: .passenger)
}
est là une autre façon d'ignorer une propriété optionnelle? Ce serait beaucoup plus facile avec les plus gros modèles.
Ceci est un bug, voir cette chaîne de commentaires: https://stackoverflow.com/questions/46104870/swift-4-decodable-additional-variables/46105080#comment79173417_46105080 – Hamish