español apple ios swift swift2

ios - español - swift apple linux



Swift 2.0: el operador binario "|" no se puede aplicar a dos operandos UIUserNotificationType (4)

Estoy tratando de registrar mi solicitud de notificaciones locales de esta manera:

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

En Xcode 7 y Swift 2.0: obtengo el error Binary Operator "|" cannot be applied to two UIUserNotificationType operands Binary Operator "|" cannot be applied to two UIUserNotificationType operands . Por favor, ayúdame.


En Swift 2, muchos tipos para los que normalmente haría esto se han actualizado para cumplir con el protocolo OptionSetType. Esto permite una sintaxis de tipo matriz para su uso, y en su caso, puede usar lo siguiente.

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

Y en una nota relacionada, si desea verificar si un conjunto de opciones contiene una opción específica, ya no necesita usar AND bit a bit y una verificación nula. Simplemente puede preguntarle al conjunto de opciones si contiene un valor específico de la misma manera en que verificaría si una matriz contiene un valor.

let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil) if settings.types.contains(.Alert) { // stuff }

En Swift 3 , las muestras deben escribirse de la siguiente manera:

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

y

let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil) if settings.types.contains(.alert) { // stuff }


Esto se ha actualizado en Swift 3.

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


Lo que funcionó para mí fue

//This worked var settings = UIUserNotificationSettings(forTypes: UIUserNotificationType([.Alert, .Badge, .Sound]), categories: nil)


Puedes escribir lo siguiente:

let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge)