1. ホーム
  2. swift

[解決済み] Swift 3でカスタム通知を作成するには?

2022-07-23 18:11:39

質問

Objective-Cでは、カスタム通知は単なるNSStringですが、Swift 3のWWDCバージョンでは、それが何であるべきかは明らかではありません。

どのように解決するのですか?

また、このためのプロトコルを使用することもできます

protocol NotificationName {
    var name: Notification.Name { get }
}

extension RawRepresentable where RawValue == String, Self: NotificationName {
    var name: Notification.Name {
        get {
            return Notification.Name(self.rawValue)
        }
    }
}

そして、通知名を enum として定義します。例えば

class MyClass {
    enum Notifications: String, NotificationName {
        case myNotification
    }
}

というように使います。

NotificationCenter.default.post(name: Notifications.myNotification.name, object: nil)

こうすることで、通知名はFoundationから切り離されます。 Notification.Name . の実装が変更された場合にのみ、プロトコルを変更する必要があります。 Notification.Name の実装が変更された場合にのみ、プロトコルを修正すればよいのです。