アプリからのメッセージをリッスンし、メッセージ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 言語自体を知りませんし、この問題をデバッグする方法もわかりません。この問題のデバッグに役立つポインタがあれば教えてください。