194

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

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。私を助けてください。

4

4 に答える 4

387

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 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
}
于 2015-06-10T17:30:17.780 に答える
35

次のように記述できます。

let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge)
于 2015-07-08T22:06:30.083 に答える