OSDN Git Service

swiftlintに対応
[kcd/KCD.git] / KCD / Fleet.swift
index 4f1f5e0..4532234 100644 (file)
@@ -8,11 +8,12 @@
 
 import Cocoa
 
-fileprivate var pDeckContext = 0
+private var pDeckContext = 0
 
 final class Fleet: NSObject {
     
     let fleetNumber: Int
+    private let deckController = NSObjectController()
     
     private let deckObserveKeys = [
         "selection.ship_0", "selection.ship_1", "selection.ship_2",
@@ -21,20 +22,19 @@ final class Fleet: NSObject {
     
     init?(number: Int) {
         
-        guard case 1...4 = number
-            else {
-                print("Fleet number out of range")
-                return nil
+        guard case 1...4 = number else {
+            
+            Logger.shared.log("Fleet number out of range")
+            return nil
         }
         
         fleetNumber = number
-        deckController = NSObjectController()
         
         super.init()
         
         deckController.entityName = Deck.entityName
         deckController.managedObjectContext = ServerDataStore.default.context
-        deckController.fetchPredicate = NSPredicate(format: "id = %ld", number)
+        deckController.fetchPredicate = NSPredicate(#keyPath(Deck.id), equal: number)
         let req = NSFetchRequest<NSFetchRequestResult>()
         req.entity = NSEntityDescription.entity(forEntityName: Deck.entityName,
                                                 in: deckController.managedObjectContext!)
@@ -46,9 +46,8 @@ final class Fleet: NSObject {
             
         } catch {
             
-            print("Fetch error")
+            Logger.shared.log("Fetch error")
             return nil
-            
         }
         
         deck = deckController.content as? Deck
@@ -58,31 +57,33 @@ final class Fleet: NSObject {
     deinit {
         
         deckObserveKeys.forEach { deckController.removeObserver(self, forKeyPath: $0) }
-        
     }
     
-    dynamic private(set) var ships: [Ship] = []
-    private let deckController: NSObjectController
-    private weak var deck: Deck?
-    
-    dynamic var name: String? { return deck?.name }
-    class func keyPathsForValuesAffectingName() -> Set<String> {
-        
-        return ["deck.name"]
-    }
-    dynamic var id: NSNumber? { return deck?.id as NSNumber? }
-    class func keyPathesForValuesAffectiongId() -> Set<String> {
+    @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
         
-        return ["deck.id"]
+        switch key {
+            
+        case #keyPath(name): return [#keyPath(deck.name)]
+            
+        case #keyPath(id): return [#keyPath(deck.id)]
+            
+        default: return []
+        }
     }
     
+    @objc dynamic private(set) var ships: [Ship] = []
+    @objc var deck: Deck?
+    
+    @objc dynamic var name: String? { return deck?.name }
+    @objc dynamic var id: NSNumber? { return deck?.id as NSNumber? }
+    
     subscript(_ index: Int) -> Ship? { return deck?[index] }
     
-    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
+    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
         
         if context == &pDeckContext {
             
-            ships = (0..<6).flatMap { return self[$0] }
+            ships = (0..<6).flatMap { self[$0] }
             
             return
         }