我正在尝试在我的应用中收听来自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方面发送一个事件,但我不知道为什么它在这里不起作用。如果我将timezoneChanged
函数实现更改为只是一个print语句,那么我就能看到print语句并且应用程序不会崩溃。
我不太了解Swift语言,也不确定如何调试此问题。如果您有任何有助于调试此问题的指示,请告诉我。