2 // PowerUpSupportViewController.swift
5 // Created by Hori,Masaki on 2016/12/25.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
11 class PowerUpSupportViewController: MainTabVIewItemViewController {
12 let managedObjectContext = ServerDataStore.default.context
15 shipController.removeObserver(self, forKeyPath: NSSortDescriptorsBinding)
18 @IBOutlet var shipController: NSArrayController!
19 @IBOutlet weak var typeSegment: NSSegmentedControl!
21 override var hasShipTypeSelector: Bool { return true }
22 override var selectedShipType: ShipType {
24 shipController.filterPredicate = customPredicate(for: selectedShipType)
25 shipController.rearrangeObjects()
28 override var nibName: String! {
29 return "PowerUpSupportViewController"
32 var omitPredicate: NSPredicate? {
33 let sd = UserDefaults.standard
34 let hideKyes = [(Bool, String)]()
35 .appended { (sd.hideMaxKaryoku, "isMaxKaryoku != TRUE") }
36 .appended { (sd.hideMaxRaisou, "isMaxRaisou != TRUE") }
37 .appended { (sd.hideMaxTaiku, "isMaxTaiku != TRUE") }
38 .appended { (sd.hideMaxSoukou, "isMaxSoukou != TRUE") }
39 .appended { (sd.hideMaxLucky, "isMaxLucky != TRUE") }
40 .flatMap { (b, s) in b ? s : nil }
41 if hideKyes.isEmpty { return nil }
42 return NSPredicate(format: hideKyes.joined(separator: " AND "))
45 override func viewDidLoad() {
50 try shipController.fetch(with: nil, merge: true)
52 fatalError("PowerUpSupportViewController: can not fetch. \(error)")
54 shipController.sortDescriptors = UserDefaults.standard.powerupSupportSortDecriptors
55 shipController.addObserver(self, forKeyPath: NSSortDescriptorsBinding, context: nil)
58 override func observeValue(forKeyPath keyPath: String?,
60 change: [NSKeyValueChangeKey : Any]?,
61 context: UnsafeMutableRawPointer?) {
62 if keyPath == NSSortDescriptorsBinding {
63 UserDefaults.standard.powerupSupportSortDecriptors = shipController.sortDescriptors
67 super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
70 fileprivate func customPredicate(for type: ShipType) -> NSPredicate? {
71 if let catPredicate = self.predicate(for: type) {
72 if let omitPredicate = self.omitPredicate {
73 return NSCompoundPredicate(type: .and,
74 subpredicates: [omitPredicate, catPredicate])
81 @IBAction func changeCategory(_ sender: AnyObject?) {
82 guard let type = ShipType(rawValue: typeSegment.selectedSegment) else { return }
83 shipController.filterPredicate = customPredicate(for: type)
84 shipController.rearrangeObjects()