在react-native app中侦听NSNotificationCenter消息

时间:2016-11-24 11:34:57

标签: swift react-native react-native-ios

我正在尝试在我的应用中收听来自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语言,也不确定如何调试此问题。如果您有任何有助于调试此问题的指示,请告诉我。

0 个答案:

没有答案