5 // Created by Hori,Masaki on 2017/01/29.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 // swiftlint:disable identifier_name
12 final class Deck: KCManagedObject {
14 @NSManaged var flagship: NSNumber?
15 @NSManaged var id: Int
16 @NSManaged var member_id: NSNumber?
17 @NSManaged var mission_0: Int
18 @NSManaged var mission_1: Int
19 @NSManaged var mission_2: Int
20 @NSManaged var mission_3: Int
21 @NSManaged var name: String
22 @NSManaged var name_id: NSNumber?
23 @NSManaged var ship_0: Int
24 @NSManaged var ship_1: Int
25 @NSManaged var ship_2: Int
26 @NSManaged var ship_3: Int
27 @NSManaged var ship_4: Int
28 @NSManaged var ship_5: Int
29 @NSManaged var ship_6: Int
31 // swiftlint:eable identifier_name
35 static var maxShipCount: Int = 7
37 func setShip(id: Int, for position: Int) {
55 default: break // fatalError("Deck.setShip: position out of range.")
60 func shipId(of position: Int) -> Int? {
83 private func ship(ofId identifier: Int) -> Ship? {
85 guard let moc = self.managedObjectContext else {
90 let req = NSFetchRequest<Ship>(entityName: Ship.entityName)
91 req.predicate = NSPredicate(#keyPath(Ship.id), equal: identifier)
93 guard let ships = try? moc.fetch(req) else {
101 subscript(_ index: Int) -> Ship? {
103 guard let shipId = shipId(of: index) else {
108 return ship(ofId: shipId)
111 subscript(_ range: CountableClosedRange<Int>) -> [Ship] {
113 return range.compactMap { self[$0] }
116 subscript(_ range: CountableRange<Int>) -> [Ship] {
118 return range.compactMap { self[$0] }