2 // PowerUpSupportViewController.swift
5 // Created by Hori,Masaki on 2016/12/25.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
11 final class PowerUpSupportViewController: MainTabVIewItemViewController {
13 @objc let managedObjectContext = ServerDataStore.default.context
17 shipController.removeObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue)
20 @IBOutlet var shipController: NSArrayController!
21 @IBOutlet weak var typeSegment: NSSegmentedControl!
23 override var hasShipTypeSelector: Bool { return true }
24 override var selectedShipType: ShipTabType {
27 shipController.filterPredicate = customPredicate()
28 shipController.rearrangeObjects()
32 override var nibName: NSNib.Name {
34 return .nibName(instanceOf: self)
37 var omitPredicate: NSPredicate? {
39 let sd = UserDefaults.standard
40 let hideKyes = [(Bool, String)]()
41 .appended { (sd[.hideMaxKaryoku], "isMaxKaryoku != TRUE") }
42 .appended { (sd[.hideMaxRaisou], "isMaxRaisou != TRUE") }
43 .appended { (sd[.hideMaxTaiku], "isMaxTaiku != TRUE") }
44 .appended { (sd[.hideMaxSoukou], "isMaxSoukou != TRUE") }
45 .appended { (sd[.hideMaxLucky], "isMaxLucky != TRUE") }
46 .flatMap { (b, s) in b ? s : nil }
48 if hideKyes.isEmpty { return nil }
50 return NSPredicate(format: hideKyes.joined(separator: " AND "))
53 override func viewDidLoad() {
61 try shipController.fetch(with: nil, merge: true)
65 fatalError("PowerUpSupportViewController: can not fetch. \(error)")
69 shipController.sortDescriptors = UserDefaults.standard[.powerupSupportSortDecriptors]
70 shipController.addObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue, context: nil)
73 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
75 if keyPath == NSBindingName.sortDescriptors.rawValue {
77 UserDefaults.standard[.powerupSupportSortDecriptors] = shipController.sortDescriptors
82 super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
85 private func customPredicate() -> NSPredicate? {
87 switch (shipTypePredicte, omitPredicate) {
89 case let (s?, o?): return NSCompoundPredicate(type: .and, subpredicates: [o, s])
90 case let (s?, nil): return s
91 case let (nil, o?): return o
96 @IBAction func changeCategory(_ sender: AnyObject?) {
98 ShipTabType(rawValue: typeSegment.selectedSegment).map { selectedShipType = $0 }