je le struct suivant ...protocole Swift codables ... encodage/décodage des classes NSCoding
struct Photo: Codable {
let hasShadow: Bool
let image: UIImage?
enum CodingKeys: String, CodingKey {
case `self`, hasShadow, image
}
init(hasShadow: Bool, image: UIImage?) {
self.hasShadow = hasShadow
self.image = image
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
hasShadow = try container.decode(Bool.self, forKey: .hasShadow)
// This fails
image = try container.decode(UIImage?.self, forKey: .image)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(hasShadow, forKey: .hasShadow)
// This also fails
try container.encode(image, forKey: .image)
}
}
Encoding un Photo
échoue avec ...
option ne se conforme pas à codable parce UIImage ne pas conforme aux codable
décodage échoue avec ...
Clé introuvable en attendant type non-option en option pour codage « image \ » clé \ "))
Yat-il un moyen d'encoder des objets Swift qui incluent NSObject
propriétés de sous-classe qui sont conformes à NSCoding
(UIImage
, UIColor
, etc.)?
Vous devez écrire encode/code de décodage personnalisé pour archiver/décompressez les objets et de 'data'. Veuillez lire [Encodage et décodage des types personnalisés] (https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types) – vadian