OSDN Git Service

swiftlint 'line_length'の警告を修正
[kcd/KCD.git] / KCD / Entity.swift
1 //
2 //  Entity.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/03/11.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import CoreData
10
11 struct Entity<T: NSManagedObject> {
12     let name: String
13     
14     init(name: String, type: T.Type) {
15         self.name = name
16     }
17 }
18
19 protocol EntityProvider {
20     associatedtype ObjectType: NSManagedObject = Self
21     
22     static var entityName: String { get }
23     static var entity: Entity<ObjectType> { get }
24 }
25 extension EntityProvider {
26     static var entity: Entity<ObjectType> {
27         return Entity(name: entityName, type: ObjectType.self)
28     }
29 }
30
31 // MARK: - Implementations
32 extension NSManagedObject {
33     class var entityName: String { return String(describing: self) }
34 }
35
36 // MARK: - KCD model
37 extension AirBase: EntityProvider {}
38 extension AirBasePlaneInfo: EntityProvider {}
39 extension Basic: EntityProvider {}
40 extension Deck: EntityProvider {}
41 extension KenzoDock: EntityProvider {}
42 extension MasterFurniture: EntityProvider {}
43 extension MasterMapArea: EntityProvider {}
44 extension MasterMapInfo: EntityProvider {}
45 extension MasterMission: EntityProvider {}
46 extension MasterShip: EntityProvider {}
47 extension MasterSlotItem: EntityProvider {}
48 extension MasterSType: EntityProvider {}
49 extension MasterSlotItemEquipType: EntityProvider {}
50 extension MasterUseItem: EntityProvider {}
51 extension Material: EntityProvider {}
52 extension NyukyoDock: EntityProvider {}
53 extension Ship: EntityProvider {}
54 extension SlotItem: EntityProvider {}
55 extension Quest: EntityProvider {}
56
57 // MARK: - LocalData model
58 extension DropShipHistory: EntityProvider {}
59 extension HiddenDropShipHistory: EntityProvider {}
60 extension KaihatuHistory: EntityProvider {}
61 extension KenzoHistory: EntityProvider {}
62 extension KenzoMark: EntityProvider {}
63
64 // MARK: - Temporay model
65 extension Battle: EntityProvider {}
66 extension Damage: EntityProvider {}
67 extension GuardEscaped: EntityProvider {}
68
69 // MARK: - Bookmark model
70 extension Bookmark: EntityProvider {}
71
72 // MARK: - ResourceHistory model
73 extension Resource: EntityProvider {}