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()
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() -> NSPredicate? {
71 switch (shipTypePredicte, omitPredicate) {
72 case let (s?, o?): return NSCompoundPredicate(type: .and, subpredicates: [o, s])
73 case let (s?, nil): return s
74 case let (nil, o?): return o
79 @IBAction func changeCategory(_ sender: AnyObject?) {
80 ShipType(rawValue: typeSegment.selectedSegment).map { selectedShipType = $0 }