1. ホーム
  2. ios

[解決済み] Swift 2.0 - 二項演算子「|」を2つのUIUserNotificationTypeオペランドに適用することはできない

2022-04-18 16:24:07

質問

この方法で、アプリケーションをローカル通知用に登録しようとしています。

UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))

Xcode 7とSwift 2.0では、エラーが発生します。 Binary Operator "|" cannot be applied to two UIUserNotificationType operands . よろしくお願いします。

解決方法を教えてください。

Swift 2 では、通常これを行う多くの型が、OptionSetType プロトコルに適合するように更新されました。これは、使用のための配列のような構文を可能にし、あなたのケースでは、次のように使用することができます。

let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)

また、これに関連して、オプションセットに特定のオプションが含まれているかどうかをチェックしたい場合、ビット単位のANDやnilチェックを使用する必要はなくなりました。配列に値が含まれているかどうかを調べるのと同じように、 オプションセットに特定の値が含まれているかどうかを調べるだけでいいのです。

let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)

if settings.types.contains(.Alert) {
    // stuff
}

スウィフト3 は,以下のように記述する必要があります.

let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)

そして

let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)

if settings.types.contains(.alert) {
    // stuff
}