@IBOutlet var planesTable: NSTableView!
@IBOutlet var airBaseController: NSArrayController!
+ private var contentObservation: NSKeyValueObservation?
+
override var windowNibName: NSNib.Name {
return .nibName(instanceOf: self)
override func windowDidLoad() {
super.windowDidLoad()
-
- airBaseController.addObserver(self, forKeyPath: #keyPath(NSArrayController.content), context: nil)
- }
-
- override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
-
- guard keyPath == #keyPath(NSArrayController.content) else {
+
+ contentObservation = airBaseController.observe(\NSArrayController.content) { [weak self] _, _ in
- super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
- return
- }
-
- updateAreaRadio()
- updatePlaneSegment()
-
- if areaId == 0 {
+ guard let `self` = self else { return }
- areaId = areas.first ?? 0
- updatePredicate()
+ self.updateAreaRadio()
+ self.updatePlaneSegment()
+
+ if self.areaId == 0 {
+
+ self.areaId = self.areas.first ?? 0
+ self.updatePredicate()
+ }
}
}
let managedObjectContext = BookmarkManager.shared().manageObjectContext
- deinit {
-
- webView.removeObserver(self, forKeyPath: #keyPath(webView.canGoBack))
- webView.removeObserver(self, forKeyPath: #keyPath(webView.canGoForward))
- }
-
@IBOutlet var webView: WebView!
@IBOutlet var goSegment: NSSegmentedControl!
@IBOutlet var bookmarkListView: NSView!
+ private var canGoBackObservation: NSKeyValueObservation?
+ private var canGoForwardObservation: NSKeyValueObservation?
+
override var windowNibName: NSNib.Name {
return .nibName(instanceOf: self)
super.windowDidLoad()
- webView.addObserver(self, forKeyPath: #keyPath(webView.canGoBack), context: nil)
- webView.addObserver(self, forKeyPath: #keyPath(webView.canGoForward), context: nil)
- webView.applicationNameForUserAgent = AppDelegate.shared.appNameForUserAgent
- webView.frameLoadDelegate = self
- }
-
- override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
-
- if keyPath == #keyPath(webView.canGoBack) {
+ canGoBackObservation = webView.observe(\WebView.canGoBack) { [weak self] _, _ in
- goSegment.setEnabled(webView.canGoBack, forSegment: 0)
+ guard let `self` = self else { return }
- return
+ self.goSegment.setEnabled(self.webView.canGoBack, forSegment: 0)
}
-
- if keyPath == #keyPath(webView.canGoForward) {
+ canGoForwardObservation = webView.observe(\WebView.canGoForward) { [weak self] _, _ in
- goSegment.setEnabled(webView.canGoForward, forSegment: 1)
+ guard let `self` = self else { return }
- return
+ self.goSegment.setEnabled(self.webView.canGoForward, forSegment: 1)
}
- super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
+ webView.applicationNameForUserAgent = AppDelegate.shared.appNameForUserAgent
+ webView.frameLoadDelegate = self
}
override func swipe(with event: NSEvent) {
@objc let managedObjectContext = ServerDataStore.default.context
- deinit {
-
- shipController.removeObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue)
- }
-
@IBOutlet var shipController: NSArrayController!
@IBOutlet weak var typeSegment: NSSegmentedControl!
+ private var sortDescriptorsObservation: NSKeyValueObservation?
+
override var hasShipTypeSelector: Bool { return true }
override var selectedShipType: ShipTabType {
}
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 {
+ sortDescriptorsObservation = shipController.observe(\NSArrayController.sortDescriptors) { [weak self] _, _ in
- UserDefaults.standard[.powerupSupportSortDecriptors] = shipController.sortDescriptors
-
- return
+ UserDefaults.standard[.powerupSupportSortDecriptors] = self?.shipController.sortDescriptors ?? []
}
-
- super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}
private func customPredicate() -> NSPredicate? {
@IBOutlet var power3TableView: NSScrollView!
@IBOutlet weak var standardDeviationField: NSTextField!
+ private var sortDescriptorsObservation: NSKeyValueObservation?
+ private var arrangedObjectsObservation: NSKeyValueObservation?
+
override var nibName: NSNib.Name {
return .nibName(instanceOf: self)
}
shipController.sortDescriptors = UserDefaults.standard[.shipviewSortDescriptors]
- shipController.addObserver(self, forKeyPath: NSBindingName.sortDescriptors.rawValue, context: nil)
- shipController.addObserver(self, forKeyPath: #keyPath(NSArrayController.arrangedObjects), context: nil)
+
+ sortDescriptorsObservation = shipController.observe(\NSArrayController.sortDescriptors) { [weak self] _, _ in
+
+ UserDefaults.standard[.shipviewSortDescriptors] = self?.shipController.sortDescriptors ?? []
+ }
+ arrangedObjectsObservation = shipController.observe(\NSArrayController.arrangedObjects) { [weak self] _, _ in
+
+ self?.notifyChangeValue(forKey: #keyPath(standardDeviation))
+ }
let tableViews = [expTableView, powerTableView, power2TableView, power3TableView]
tableViews
#endif
}
- override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
-
- if keyPath == NSBindingName.sortDescriptors.rawValue {
-
- UserDefaults.standard[.shipviewSortDescriptors] = shipController.sortDescriptors
-
- return
- }
-
- if keyPath == #keyPath(NSArrayController.arrangedObjects) {
-
- notifyChangeValue(forKey: #keyPath(standardDeviation))
-
- return
- }
-
- super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
- }
-
private func showView(with type: ViewType) {
let newSelection: NSView = {