67 lines
1.7 KiB
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)
|
|
}
|
|
}
|