From: masakih Date: Sun, 29 Oct 2017 06:11:29 +0000 (+0900) Subject: データがない状態で起動した時に艦隊が反映されない問題を修正 X-Git-Tag: 1.9b23~7 X-Git-Url: http://git.osdn.net/view?p=kcd%2FKCD.git;a=commitdiff_plain;h=d51e1af13f641d46fbda0430a43ff578dc6979ef データがない状態で起動した時に艦隊が反映されない問題を修正 --- diff --git a/KCD.xcodeproj/project.pbxproj b/KCD.xcodeproj/project.pbxproj index 221b22c6..351910e2 100644 --- a/KCD.xcodeproj/project.pbxproj +++ b/KCD.xcodeproj/project.pbxproj @@ -750,6 +750,39 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + F455DDC41FA4C81C00CDE64D /* Mics */ = { + isa = PBXGroup; + children = ( + F45771221E1BCC7C008A9215 /* PeriodicNotifier.swift */, + F47215A11E1F38280083D3BC /* Queue.swift */, + F491A4BB1E4B523C00D1E067 /* ApplicationDirecrories.swift */, + F455DDC01FA4A6CD00CDE64D /* Logger.swift */, + F455DDC21FA4A9E400CDE64D /* LoggerExtension.swift */, + F40F976E1E67092600AE81BB /* ArrayExtensions.swift */, + F404AF561F2CDD1C00A006B8 /* DefaultKey.swift */, + F404AF611F2D8CAE00A006B8 /* DefaultKeys.swift */, + F48883461F2E2E9A0069E0C3 /* DefaultKeyExtendedValues.swift */, + F48883441F2E095F0069E0C3 /* DefaultSettings.swift */, + F46FEA3E1F81285D00E2427C /* Localizable.swift */, + F46FEA401F8128BB00E2427C /* LocalizedStrings.swift */, + F40F97701E68536400AE81BB /* FileManagerExtension.swift */, + F44AA26A1E82AD2E00EED8BE /* NSObjectExtension.swift */, + F4AF56851F7F6EF8004F4F4E /* NSNibExtension.swift */, + F4AF56841F7F6EF8004F4F4E /* NSUserInterfaceItemIdentifierExtension.swift */, + F4CC5C081F88DBD50006B3FA /* NSPredicateExtension.swift */, + ); + name = Mics; + sourceTree = ""; + }; + F455DDC51FA4C8F900CDE64D /* DeckBuilder */ = { + isa = PBXGroup; + children = ( + F4EE4AD71F18F43700AD92B4 /* DeckBuilderStructure.swift */, + F4EE4AD91F18F66A00AD92B4 /* DeckBuilder.swift */, + ); + name = DeckBuilder; + sourceTree = ""; + }; F45F3BDC1E0575170009434E /* TouchBar */ = { isa = PBXGroup; children = ( @@ -978,52 +1011,35 @@ children = ( F4FC3E931E44A5D600E41228 /* AppDelegate.swift */, F47B06DC1E97ECD4006711D9 /* WindowManager.swift */, - F491A4BB1E4B523C00D1E067 /* ApplicationDirecrories.swift */, - F455DDC01FA4A6CD00CDE64D /* Logger.swift */, - F455DDC21FA4A9E400CDE64D /* LoggerExtension.swift */, - F44AA26A1E82AD2E00EED8BE /* NSObjectExtension.swift */, - F4AF56851F7F6EF8004F4F4E /* NSNibExtension.swift */, - F4AF56841F7F6EF8004F4F4E /* NSUserInterfaceItemIdentifierExtension.swift */, - F4CC5C081F88DBD50006B3FA /* NSPredicateExtension.swift */, - F40F976E1E67092600AE81BB /* ArrayExtensions.swift */, - F40F97701E68536400AE81BB /* FileManagerExtension.swift */, F4AF56801F7BF0CF004F4F4E /* IntConvertable.swift */, - F404AF561F2CDD1C00A006B8 /* DefaultKey.swift */, - F48883461F2E2E9A0069E0C3 /* DefaultKeyExtendedValues.swift */, - F404AF611F2D8CAE00A006B8 /* DefaultKeys.swift */, - F48883441F2E095F0069E0C3 /* DefaultSettings.swift */, - F46FEA3E1F81285D00E2427C /* Localizable.swift */, - F46FEA401F8128BB00E2427C /* LocalizedStrings.swift */, - F44775881EF6AAD900287572 /* SakutekiCalculator.swift */, - F41A451A1F4917640066F83D /* SeikuCalclator.swift */, - F4BBA21E1F243CA900E68743 /* DamageCalculator.swift */, - F429FAAD1F619927006299ED /* TPValueCalculator.swift */, F429FAAF1F62D769006299ED /* ShipType.swift */, F42546911EF8002E00BE297E /* EquitType.swift */, - F4EE4AD71F18F43700AD92B4 /* DeckBuilderStructure.swift */, - F4EE4AD91F18F66A00AD92B4 /* DeckBuilder.swift */, + F455DDC41FA4C81C00CDE64D /* Mics */, F4BEEFE21B0CD39B004702B8 /* Transformar&Formatter */, F4C118F318A67B05005D5B25 /* CustomHTTPProtocol */, - F47215A11E1F38280083D3BC /* Queue.swift */, F4FC3E8F1E437E1F00E41228 /* JSONReciever.swift */, F4CF25A91E338ED000C02A66 /* JSONTracker.swift */, F4CF25A71E325ABA00C02A66 /* APIResponse.swift */, F4CF25BF1E36428400C02A66 /* MissionStatus.swift */, F4CF25BD1E361F4600C02A66 /* NyukyoDockStatus.swift */, + F44775881EF6AAD900287572 /* SakutekiCalculator.swift */, + F41A451A1F4917640066F83D /* SeikuCalclator.swift */, + F4BBA21E1F243CA900E68743 /* DamageCalculator.swift */, + F429FAAD1F619927006299ED /* TPValueCalculator.swift */, F4CF25BB1E34F67400C02A66 /* KenzoDockStatus.swift */, F4CF25B91E34EB6600C02A66 /* BookmarkManager.swift */, - F45771221E1BCC7C008A9215 /* PeriodicNotifier.swift */, F4CF25B51E34BAD500C02A66 /* AnchorageRepairManager.swift */, F4CF25B31E34A38F00C02A66 /* ResourceHistoryManager.swift */, F4CF25AF1E3455EA00C02A66 /* Fleet.swift */, F4CF25B11E34799400C02A66 /* FleetManager.swift */, F45F3BE01E067A870009434E /* HistoryItemCleaner.swift */, F4CF25AB1E33AB4400C02A66 /* TimeSignalNotifier.swift */, - F45F3BDC1E0575170009434E /* TouchBar */, + F4BEEEA818D88FF30006F70C /* CoreData */, F47C3EBF1E62A4C800D97449 /* JSONMapper */, F4D2CBBF18ACE7D7000EBC59 /* Command */, F4BEEEA918D890660006F70C /* UI */, - F4BEEEA818D88FF30006F70C /* CoreData */, + F45F3BDC1E0575170009434E /* TouchBar */, + F455DDC51FA4C8F900CDE64D /* DeckBuilder */, F4BDEB4D187252F30069D0CE /* Supporting Files */, F45F3BDD1E0679D80009434E /* KCD-Bridging-Header.h */, ); diff --git a/KCD/Fleet.swift b/KCD/Fleet.swift index 390b72aa..3b334130 100644 --- a/KCD/Fleet.swift +++ b/KCD/Fleet.swift @@ -48,7 +48,6 @@ final class Fleet: NSObject { Logger.shared.log("Fetch error") return nil - } deck = deckController.content as? Deck @@ -58,7 +57,6 @@ final class Fleet: NSObject { deinit { deckObserveKeys.forEach { deckController.removeObserver(self, forKeyPath: $0) } - } @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set { @@ -85,7 +83,7 @@ final class Fleet: NSObject { if context == &pDeckContext { - ships = (0..<6).flatMap { return self[$0] } + ships = (0..<6).flatMap { self[$0] } return } diff --git a/KCD/FleetManager.swift b/KCD/FleetManager.swift index 64c8073b..bd01c19a 100644 --- a/KCD/FleetManager.swift +++ b/KCD/FleetManager.swift @@ -8,11 +8,6 @@ import Cocoa -extension Notification.Name { - - static let DidPrepareFleet = Notification.Name("com.masakih.KCD.Notification.DidPrepareFleet") -} - final class FleetManager: NSObject { override init() { @@ -31,7 +26,6 @@ final class FleetManager: NSObject { setNewFleetNumberToShip() return - } super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) @@ -59,14 +53,13 @@ final class FleetManager: NSObject { token = center.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) {_ in center.removeObserver(token) - self.setupFleetController() - center.post(name: .DidPrepareFleet, object: self) + DispatchQueue.main.async(execute: self.setupFleetController) + DispatchQueue.main.async(execute: self.setNewFleetNumberToShip) } } else { setupFleetController() - } } diff --git a/KCD/FleetViewController.swift b/KCD/FleetViewController.swift index 9bcabb76..e9ce2675 100644 --- a/KCD/FleetViewController.swift +++ b/KCD/FleetViewController.swift @@ -254,10 +254,13 @@ final class FleetViewController: NSViewController { } fleetNumber = 1 - NotificationCenter.default - .addObserver(forName: .DidPrepareFleet, object: nil, queue: nil) { [weak self] _ in + // 初回起動時などデータがまだない時はportAPIを受信後設定する + weak var token: NSObjectProtocol? + token = NotificationCenter.default + .addObserver(forName: .PortAPIReceived, object: nil, queue: nil) { [weak self] _ in - self?.notifyChangeValue(forKey: #keyPath(fleetNumber)) + token.map(NotificationCenter.default.removeObserver) + self?.fleetNumber = 1 } NotificationCenter diff --git a/KCD/ShipMasterDetailWindowController.swift b/KCD/ShipMasterDetailWindowController.swift index 4ef5a16e..a94e0797 100644 --- a/KCD/ShipMasterDetailWindowController.swift +++ b/KCD/ShipMasterDetailWindowController.swift @@ -79,12 +79,13 @@ extension ShipMasterDetailWindowController: NSTableViewDelegate { (shipsView, shipController), (fleetMemberView, fleetMemberController) ] + .lazy .filter { $0.0 == tableView } + .flatMap { $0.1 } .first - guard let selectedObjects = controller?.1.selectedObjects as? [Ship] else { return } - guard selectedObjects.count != 0 else { return } + guard let selectedObjects = controller?.selectedObjects as? [Ship] else { return } - selectedShip = selectedObjects[0] + selectedShip = selectedObjects.first } }