2010-04-06 22 views
5

Estoy tratando de utilizar esta línea bastante estándar de código en mi aplicación:UIRemoteNotificationType conversión inválida

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

Pero estoy recibiendo el error siguiente:

error: invalid conversion from 'int' to 'UIRemoteNotificationType' 

Funciona si yo sólo uso uno de los tipos de notificación, pero falla cada vez que intento usar más de uno. ¿Alguna idea de lo que estoy haciendo mal?

Respuesta

14

Probablemente esté utilizando Objective-C++, cuya conversión implícita de int a una enumeración no está permitida.

intenta agregar una conversión explícita:

[… registerForRemoteNotificationTypes: 
    (UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | …)]; 
4

tienen que desechar el resultado como UIRemoteNotificationType:

(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound) 

De esta manera el método tiene lo que se está a la espera.

+0

Esto era correcto, pero acepté la respuesta de KennyTM porque proporcionaba los detalles de por qué. Gracias. –

1

Utilice esta: Esto va a resolver ur problema.

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 
Cuestiones relacionadas