Swift - Как согласовать эту структуру с Codable? - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть такая структура

struct Photo: Codable {
    var image: UIImage
    let caption: String?
    let location: CLLocationCoordinate2D?
}

private enum CodingKeys: String, CodingKey {
    case image = "image"
    case caption = "caption"
    case location = "location"
}

Я получаю следующие 2 ошибки:

Тип «Фото» не соответствует протоколу «Декодируемый»

Тип «Фото» не соответствует протоколу «Кодируемый»

1 Ответ

1 голос
/ 13 февраля 2020

«Фотография» не соответствует протоколу Encodable / Decodable, потому что UIImage не может соответствовать Codable. Также CLLocationCoordinate2D не может соответствовать Codable. Вы можете указать var image с типом Data и затем получить UIImage от Data.

Примерно так:

struct Photo: Codable {
    var imageData: Data
    let caption: String?
    let location: String?

    func getImage(from data: Data) -> UIImage? {
        return UIImage(data: data)
    }
}

private enum CodingKeys: String, CodingKey {
    case imageData = "image"
    case caption = "caption"
    case location = "location"
}
...