私は、次の構造体を持っているのデコード...スウィフトコード可能なプロトコル...エンコーディング/ 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)
}
}
がPhoto
をコードするUIImageが準拠 ていないため、オプションがコード化可能に準拠していない
...で失敗しますエンコード可能
デコードに失敗しました...
「画像\」\ コーディングキー用のオプションの非オプションタイプを期待するとき "が見つかりませんキー))
NSCoding
に準拠NSObject
サブクラスのプロパティが含まれスウィフトオブジェクトをエンコードする方法はあります(UIImage
,UIColor
など)?
あなたがにしてData' 'からアーカイブしない/オブジェクトをアーカイブするためにカスタムのエンコード/デコードコードを記述する必要が...エンコード/デコード
Data
の方向に私を指して@vadianします。 [カスタムタイプのエンコーディングとデコード](https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types) – vadian