アプリからのメッセージをリッスンし、メッセージNSNotificationCenterを受信したときに JS 側にイベントを送信しようとしています。NSSystemTimeZoneDidChangeNotification主に、ユーザーのデバイスのタイムゾーンが変更されたかどうかを検出するために使用できるメッセージに興味があります。AppDelegate.swiftこのために次のコードを追加しました。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
// Existing code
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(AppDelegate.timezoneChanged), name: NSSystemTimeZoneDidChangeNotification, object: nil)
}
func timezoneChanged() {
let appEventEmitter = self.bridge.moduleForClass(AppEventEmitter) as! AppEventEmitter
appEventEmitter.sendEventWithName("timezoneChanged", body:nil)
}
この変更後、電話のタイムゾーンを変更してアプリに移動すると、timezoneChanged関数が呼び出されますが、すぐにコードに例外が表示され、アプリケーションがクラッシュします
fatal error: unexpectedly found nil while unwrapping an Optional value
問題はにあると思いappEventEmitterます。アプリの他の部分で正確なコードを使用して JS 側にイベントを送信していますが、ここで機能しない理由がわかりません。関数の実装を print ステートメントだけに変更するtimezoneChangedと、print ステートメントを確認でき、アプリはクラッシュしません。
私は Swift 言語自体を知りませんし、この問題をデバッグする方法もわかりません。この問題のデバッグに役立つポインタがあれば教えてください。