私はこのようにローカル通知用に自分のアプリケーションを登録しようとしています。
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
}
Swiftでは、サンプルは次のように書く必要があります。
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
}
次のように書くことができます。
let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge)
私にとってうまくいったのは
//This worked
var settings = UIUserNotificationSettings(forTypes: UIUserNotificationType([.Alert, .Badge, .Sound]), categories: nil)
これはSwift 3で更新されました。
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)