1. ホーム
  2. ios

[解決済み] NSNotificationCenterのaddObserver in Swift

2022-03-22 19:23:12

質問

Swiftでデフォルトの通知センターにオブザーバーを追加する方法は? 私は、バッテリーのレベルが変化したときに通知を送信するコードのこの行を移植しようとしています。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil];

解決方法は?

Objective-CのAPIと同じですが、Swiftの構文を使っています。

Swift 4.2 & Swift 5です。

NotificationCenter.default.addObserver(
    self,
    selector: #selector(self.batteryLevelChanged),
    name: UIDevice.batteryLevelDidChangeNotification,
    object: nil)

オブザーバーがObjective-Cオブジェクトを継承していない場合、メソッドのプレフィックスとして @objc セレクタとして使用するためです。

@objc private func batteryLevelChanged(notification: NSNotification){     
    //do stuff using the userInfo property of the notification object
}

参照 NSNotificationCenter クラスリファレンス , Objective-CのAPIと連動する