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("Temporary",
15 type: NSInMemoryStoreType
18 extension CoreDataCore {
19 static let temporary = CoreDataCore(.temporary)
22 class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
23 static var `default` = TemporaryDataStore(type: .reader)
24 class func oneTimeEditor() -> TemporaryDataStore {
25 return TemporaryDataStore(type: .editor)
28 required init(type: CoreDataManagerType) {
29 managedObjectContext =
30 type == .reader ? core.parentContext : core.editorContext()
36 let core = CoreDataCore.temporary
37 let managedObjectContext: NSManagedObjectContext
40 extension TemporaryDataStore {
41 func battle() -> Battle? {
42 return battles().first
44 func battles() -> [Battle] {
45 guard let battles = try? self.objects(with: Battle.entity)
50 battles().forEach { delete($0) }
52 func createBattle() -> Battle? {
53 return insertNewObject(for: Battle.entity)
56 func sortedDamagesById() -> [Damage] {
57 let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
58 guard let damages = try? objects(with: Damage.entity, sortDescriptors: [sortDescriptor])
62 func damages() -> [Damage] {
63 guard let damages = try? objects(with: Damage.entity)
67 func createDamage() -> Damage? {
68 return insertNewObject(for: Damage.entity)
71 func guardEscaped() -> [GuardEscaped] {
72 guard let escapeds = try? objects(with: GuardEscaped.entity)
76 func ensuredGuardEscaped(byShipId shipId: Int) -> GuardEscaped? {
77 let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
78 guard let escapes = try? objects(with: GuardEscaped.entity, predicate: p)
82 func notEnsuredGuardEscaped() -> [GuardEscaped] {
83 let predicate = NSPredicate(format: "ensured = FALSE")
84 guard let escapeds = try? objects(with: GuardEscaped.entity, predicate: predicate)
88 func createGuardEscaped() -> GuardEscaped? {
89 return insertNewObject(for: GuardEscaped.entity)