OSDN Git Service

Swift4.0にコンバートした
[kcd/KCD.git] / KCD / Fleet.swift
index 8a909ef..ed32838 100644 (file)
@@ -8,68 +8,85 @@
 
 import Cocoa
 
-fileprivate var pDeckContext = 0
+private var pDeckContext = 0
 
-class Fleet: NSObject {
+final class Fleet: NSObject {
+    
     let fleetNumber: Int
+    
     private let deckObserveKeys = [
         "selection.ship_0", "selection.ship_1", "selection.ship_2",
-        "selection.ship_3", "selection.ship_4", "selection.ship_5",
-        ]
+        "selection.ship_3", "selection.ship_4", "selection.ship_5"
+    ]
     
     init?(number: Int) {
-        guard 1...4 ~= number
+        
+        guard case 1...4 = number
             else {
                 print("Fleet number out of range")
                 return nil
         }
+        
         fleetNumber = number
         deckController = NSObjectController()
+        
         super.init()
         
         deckController.entityName = Deck.entityName
-        deckController.managedObjectContext = ServerDataStore.default.managedObjectContext
+        deckController.managedObjectContext = ServerDataStore.default.context
         deckController.fetchPredicate = NSPredicate(format: "id = %ld", number)
         let req = NSFetchRequest<NSFetchRequestResult>()
         req.entity = NSEntityDescription.entity(forEntityName: Deck.entityName,
                                                 in: deckController.managedObjectContext!)
         req.predicate = deckController.fetchPredicate
+        
         do {
+            
             try deckController.fetch(with: req, merge: false)
+            
         } catch {
+            
             print("Fetch error")
             return nil
+            
         }
+        
         deck = deckController.content as? Deck
         deckObserveKeys.forEach { deckController.addObserver(self, forKeyPath: $0, context: &pDeckContext) }
     }
+    
     deinit {
+        
         deckObserveKeys.forEach { deckController.removeObserver(self, forKeyPath: $0) }
+        
     }
     
-    dynamic private(set) var ships: [Ship] = []
+    @objc dynamic private(set) var ships: [Ship] = []
     private let deckController: NSObjectController
-    private weak var deck: Deck?
+    @objc weak var deck: Deck?
     
-    dynamic var name: String? { return deck?.name }
-    func keyPathsForValuesAffectingName() -> Set<String> {
+    @objc dynamic var name: String? { return deck?.name }
+    @objc class func keyPathsForValuesAffectingName() -> Set<String> {
+        
         return ["deck.name"]
     }
-    dynamic var id: NSNumber? { return deck?.id as NSNumber? }
-    func keyPathesForValuesAffectiongId() -> Set<String> {
+    @objc dynamic var id: NSNumber? { return deck?.id as NSNumber? }
+    @objc class func keyPathesForValuesAffectiongId() -> Set<String> {
+        
         return ["deck.id"]
     }
     
     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] }
+            
             return
         }
+        
         super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
     }
 }