Я пытаюсь зарегистрировать приложение для локальных уведомлений следующим образом:
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)
И в соответствующей заметке, если вы хотите проверить, содержит ли набор опций определенный параметр, вам больше не нужно использовать побитовое И и проверку нуля. Вы можете просто задать опцию, если она содержит определенное значение так же, как вы бы проверяли, содержит ли массив значение.
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
}
flags |= .Alert?
Можете ли вы использовать flags = [flags, .Alert]
?
Вы можете написать следующее:
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)
Could not find an overload '|' that accepts the supplied arguments