if keyPath == "arrangedObjects.ships" {
setNewFleetNumberToShip()
+
return
}
private func setupFleets() {
- fleets = (1...4).flatMap { Fleet(number: $0) }
+ fleets = (1...4).compactMap { Fleet(number: $0) }
guard fleets.count == 4 else {
- return Logger.shared.log("Can not create Fleet")
+ Logger.shared.log("Can not create Fleet")
+
+ return
}
if fleets[0].ships.isEmpty {
- let center = NotificationCenter.default
- weak var token: NSObjectProtocol!
- token = center.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) {_ in
-
- center.removeObserver(token)
- DispatchQueue.main.async(execute: self.setupFleetController)
- DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
+ NotificationCenter.default
+ .addObserverOnce(forName: .PortAPIReceived, object: nil, queue: nil) { _ in
+
+ DispatchQueue.main.async(execute: self.setupFleetController)
+ DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
}
} else {
private func setNewFleetNumberToShip() {
let store = ServerDataStore.oneTimeEditor()
-
- // clear all
- store.shipsInFleet().forEach { $0.fleet = 0 as NSNumber }
-
- // set
- fleets.enumerated().forEach { (index, fleet) in
+ store.sync {
+
+ // clear all
+ store.shipsInFleet().forEach { $0.fleet = 0 as NSNumber }
- fleet.ships.forEach {
+ // set
+ self.fleets.enumerated().forEach { index, fleet in
- store.ship(by: $0.id)?.fleet = (index + 1) as NSNumber
+ fleet.ships.forEach { ship in
+
+ store.ship(by: ship.id)?.fleet = (index + 1) as NSNumber
+ }
}
}
}