2 // TemporaryDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension CoreDataConfiguration {
13 static let temporary = CoreDataConfiguration("Temporary",
16 type: NSInMemoryStoreType
20 final class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
22 static let core = CoreDataCore(.temporary)
24 static let `default` = TemporaryDataStore(type: .reader)
26 class func oneTimeEditor() -> TemporaryDataStore {
28 return TemporaryDataStore(type: .editor)
31 required init(type: CoreDataManagerType) {
33 context = TemporaryDataStore.context(for: type)
41 let context: NSManagedObjectContext
44 extension TemporaryDataStore {
46 func battle() -> Battle? {
48 return battles().first
51 func battles() -> [Battle] {
53 guard let battles = try? self.objects(of: Battle.entity)
61 battles().forEach { delete($0) }
64 func createBattle() -> Battle? {
66 return insertNewObject(for: Battle.entity)
69 func sortedDamagesById() -> [Damage] {
71 let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
73 guard let damages = try? objects(of: Damage.entity, sortDescriptors: [sortDescriptor])
79 func damages() -> [Damage] {
81 guard let damages = try? objects(of: Damage.entity)
87 func createDamage() -> Damage? {
89 return insertNewObject(for: Damage.entity)
92 func guardEscaped() -> [GuardEscaped] {
94 guard let escapeds = try? objects(of: GuardEscaped.entity)
100 func ensuredGuardEscaped(byShipId shipId: Int) -> GuardEscaped? {
102 let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
104 guard let escapes = try? objects(of: GuardEscaped.entity, predicate: p)
110 func notEnsuredGuardEscaped() -> [GuardEscaped] {
112 let predicate = NSPredicate(format: "ensured = FALSE")
114 guard let escapeds = try? objects(of: GuardEscaped.entity, predicate: predicate)
120 func createGuardEscaped() -> GuardEscaped? {
122 return insertNewObject(for: GuardEscaped.entity)