Files
Zockerhoehle/Zockerhoehle/CDModel/GameSeries+CoreDataClass.swift

67 lines
1.7 KiB
Swift

//
// GameSeries+CoreDataClass.swift
// Zockerhoehle
//
// Created by Julian-Steffen Müller on 24.09.19.
// Copyright © 2019 Julian-Steffen Müller. All rights reserved.
//
//
import Foundation
import CoreData
import UIKit
@objc(GameSeries)
public class GameSeries: NSManagedObject, Identifiable {
public var id : String {
return objectID.uriRepresentation().absoluteString
}
var coverAsUIImage : UIImage? {
get {
if let coverImage = self.cover?.image {
return coverImage
}
return .none
}
set {
if let coverImage = newValue {
let newCover = GameSeriesCover(context: CDManager.shared.viewContext)
newCover.gameSeries = self
newCover.image = coverImage
self.cover = newCover
}
}
}
}
extension GameSeries : Encodable {
enum CodingKeys: String, CodingKey {
case uuid
case name
case games
case cover
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(uuid, forKey: .uuid)
try container.encode(name, forKey: .name)
var gamesList : [String] = []
for game in games {
if let game = game as? Game {
gamesList.append(game.objectID.uriRepresentation().absoluteString)
}
}
try container.encode(gamesList, forKey: .games)
let coverBase64 = cover?.image?.pngData()?.base64EncodedString() ?? ""
try container.encode(coverBase64, forKey: .cover)
}
}