OSDN Git Service

不要となっていたプロパティを削除
[kcd/KCD.git] / KCD / PowerUpSupportViewController.swift
index 1302afa..c4d084e 100644 (file)
@@ -12,18 +12,16 @@ final class PowerUpSupportViewController: MainTabVIewItemViewController {
     
     @objc let managedObjectContext = ServerDataStore.default.context
     
-    deinit {
-        
-        shipController.removeObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue)
-    }
+    @IBOutlet private var shipController: NSArrayController!
+    @IBOutlet private weak var typeSegment: NSSegmentedControl!
     
-    @IBOutlet var shipController: NSArrayController!
-    @IBOutlet weak var typeSegment: NSSegmentedControl!
+    private var sortDescriptorsObservation: NSKeyValueObservation?
     
     override var hasShipTypeSelector: Bool { return true }
     override var selectedShipType: ShipTabType {
         
         didSet {
+            
             shipController.filterPredicate = customPredicate()
             shipController.rearrangeObjects()
         }
@@ -37,17 +35,20 @@ final class PowerUpSupportViewController: MainTabVIewItemViewController {
     var omitPredicate: NSPredicate? {
         
         let sd = UserDefaults.standard
-        let hideKyes = [(Bool, String)]()
-            .appended { (sd[.hideMaxKaryoku], "isMaxKaryoku != TRUE") }
-            .appended { (sd[.hideMaxRaisou], "isMaxRaisou != TRUE") }
-            .appended { (sd[.hideMaxTaiku], "isMaxTaiku != TRUE") }
-            .appended { (sd[.hideMaxSoukou], "isMaxSoukou != TRUE") }
-            .appended { (sd[.hideMaxLucky], "isMaxLucky != TRUE") }
-            .flatMap { (b, s) in b ? s : nil }
+        let predicates = [(Bool, NSPredicate)]()
+            .appended { (sd[.hideMaxKaryoku], .false(#keyPath(Ship.isMaxKaryoku))) }
+            .appended { (sd[.hideMaxRaisou], .false(#keyPath(Ship.isMaxRaisou))) }
+            .appended { (sd[.hideMaxTaiku], .false(#keyPath(Ship.isMaxTaiku))) }
+            .appended { (sd[.hideMaxSoukou], .false(#keyPath(Ship.isMaxSoukou))) }
+            .appended { (sd[.hideMaxLucky], .false(#keyPath(Ship.isMaxLucky))) }
+            .compactMap { (b, s) in b ? s : nil }
         
-        if hideKyes.isEmpty { return nil }
+        if predicates.isEmpty {
+            
+            return nil
+        }
         
-        return NSPredicate(format: hideKyes.joined(separator: " AND "))
+        return .and(predicates)
     }
     
     override func viewDidLoad() {
@@ -63,33 +64,27 @@ final class PowerUpSupportViewController: MainTabVIewItemViewController {
         } catch {
             
             fatalError("PowerUpSupportViewController: can not fetch. \(error)")
-            
         }
         
         shipController.sortDescriptors = UserDefaults.standard[.powerupSupportSortDecriptors]
-        shipController.addObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue, context: nil)
-    }
-    
-    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
-        
-        if keyPath == NSBindingName.sortDescriptors.rawValue {
-            
-            UserDefaults.standard[.powerupSupportSortDecriptors] = shipController.sortDescriptors
+        sortDescriptorsObservation = shipController.observe(\NSArrayController.sortDescriptors) { [weak self] _, _ in
             
-            return
+            UserDefaults.standard[.powerupSupportSortDecriptors] = self?.shipController.sortDescriptors ?? []
         }
-        
-        super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
     }
     
     private func customPredicate() -> NSPredicate? {
         
-        switch (shipTypePredicte, omitPredicate) {
+        switch (shipTypePredicte(for: selectedShipType), omitPredicate) {
+            
+        case let (s?, o?): return .and([o, s])
             
-        case let (s?, o?): return NSCompoundPredicate(type: .and, subpredicates: [o, s])
         case let (s?, nil): return s
+            
         case let (nil, o?): return o
+            
         default: return nil
+            
         }
     }