final class Fleet: NSObject {
let fleetNumber: Int
+ private let deckController = NSObjectController()
private let deckObserveKeys = [
"selection.ship_0", "selection.ship_1", "selection.ship_2",
}
fleetNumber = number
- deckController = NSObjectController()
super.init()
deckController.entityName = Deck.entityName
deckController.managedObjectContext = ServerDataStore.default.context
- deckController.fetchPredicate = NSPredicate(format: "id = %ld", number)
+ deckController.fetchPredicate = NSPredicate(#keyPath(Deck.id), equal: number)
let req = NSFetchRequest<NSFetchRequestResult>()
req.entity = NSEntityDescription.entity(forEntityName: Deck.entityName,
in: deckController.managedObjectContext!)
}
+ @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
+
+ switch key {
+
+ case #keyPath(name): return ["deck.name"]
+
+ case #keyPath(id): return ["deck.id"]
+
+ default: return []
+ }
+ }
+
@objc dynamic private(set) var ships: [Ship] = []
- private let deckController: NSObjectController
@objc weak var deck: Deck?
@objc dynamic var name: String? { return deck?.name }
- @objc class func keyPathsForValuesAffectingName() -> Set<String> {
-
- return ["deck.name"]
- }
@objc dynamic var id: NSNumber? { return deck?.id as NSNumber? }
- @objc class func keyPathesForValuesAffectiongId() -> Set<String> {
-
- return ["deck.id"]
- }
subscript(_ index: Int) -> Ship? { return deck?[index] }