2 // TemporaryDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension CoreDataIntormation {
12 static let temporary = CoreDataIntormation(
13 modelName: "Temporary",
14 storeFileName: ":memory:",
16 storeType: NSInMemoryStoreType,
20 extension CoreDataCore {
21 static let temporary = CoreDataCore(.temporary)
25 class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
26 static var `default` = TemporaryDataStore(type: .reader)
27 class func oneTimeEditor() -> TemporaryDataStore {
28 return TemporaryDataStore(type: .editor)
31 required init(type: CoreDataManagerType) {
32 managedObjectContext =
33 type == .reader ? core.parentManagedObjectContext
34 : core.editorManagedObjectContext()
40 let core = CoreDataCore.temporary
41 var managedObjectContext: NSManagedObjectContext
44 extension KCBattle: EntityProvider {
45 override class var entityName: String { return "Battle" }
47 extension KCDamage: EntityProvider {
48 override class var entityName: String { return "Damage" }
50 extension KCGuardEscaped: EntityProvider {
51 override class var entityName: String { return "GuardEscaped" }
54 extension TemporaryDataStore {
55 func battle() -> KCBattle? {
56 return battles().first
58 func battles() -> [KCBattle] {
59 guard let battles = try? self.objects(with: KCBattle.entity)
64 battles().forEach { delete($0) }
66 func createBattle() -> KCBattle? {
67 return insertNewObject(for: KCBattle.entity)
70 func sortedDamagesById() -> [KCDamage] {
71 let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
72 guard let damages = try? objects(with: KCDamage.entity, sortDescriptors: [sortDescriptor])
76 func damages() -> [KCDamage] {
77 guard let damages = try? objects(with: KCDamage.entity)
81 func createDamage() -> KCDamage? {
82 return insertNewObject(for: KCDamage.entity)
85 func guardEscaped() -> [KCGuardEscaped] {
86 guard let escapeds = try? objects(with: KCGuardEscaped.entity)
90 func ensuredGuardEscaped(byShipId shipId: Int) -> KCGuardEscaped? {
91 let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
92 guard let escapes = try? objects(with: KCGuardEscaped.entity, predicate: p)
96 func notEnsuredGuardEscaped() -> [KCGuardEscaped] {
97 let predicate = NSPredicate(format: "ensured = FALSE")
98 guard let escapeds = try? objects(with: KCGuardEscaped.entity, predicate: predicate)
102 func createGuardEscaped() -> KCGuardEscaped? {
103 return insertNewObject(for: KCGuardEscaped.entity)