cs193p-emojiart/EmojiArt/EmojiArtModel.Background.swift
Ching ac3031dd05 feat(view, model): 增加自动保存功能
增加自动保存功能

Signed-off-by: Ching <loooching@gmail.com>
2023-02-23 21:59:16 +08:00

56 lines
1.5 KiB
Swift

//
// EmojiArtModel.Background.swift
// EmojiArt
//
// Created by ching on 2023/2/19.
//
import Foundation
extension EmojiArtModel {
enum Background: Equatable, Codable {
case blank
case url(URL)
case imageData(Data)
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
if let url = try? container.decode(URL.self, forKey: .url) {
self = .url(url)
} else if let imageData = try? container.decode(Data.self, forKey: .imageData) {
self = .imageData(imageData)
} else {
self = .blank
}
}
enum CodingKeys: String, CodingKey {
case url = "theURL"
case imageData
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
switch self {
case .url(let url): try container.encode(url, forKey: .url)
case .imageData(let data): try container.encode(data, forKey: .imageData)
case .blank: break
}
}
var url: URL? {
switch self {
case .url(let url): return url
default: return nil
}
}
var imageData: Data? {
switch self {
case .imageData(let data): return data
default: return nil
}
}
}
}