2010-04-06 18 views
5

Sto cercando di utilizzare questa linea abbastanza standard di codice nel mio app:UIRemoteNotificationType conversione non valida

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

Ma sto ricevendo l'errore seguente:

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

Funziona se uso una sola dei tipi di notifica ma fallisce ogni volta se provo a usarne più di uno. Qualche idea su cosa sto facendo male?

risposta

14

Probabilmente stai usando Objective-C++, la conversione implicita da int a un enum non è consentita.

tenta di aggiungere un cast esplicito:

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

si deve lanciare il risultato come UIRemoteNotificationType:

(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound) 

In questo modo il metodo ottenuto quello che si aspetta.

+0

Questo è stato corretto ma ho accettato la risposta di KennyTM in quanto ha fornito il dettaglio perché. Grazie. –

1

Utilizzare questa: Questo risolverà il problema ur.

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