views:

147

answers:

2

Hi,

I'm trying to use this fairly standard line of code in my app:

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

But am receiving the follow error:

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

It works if I only use one of the notification types but fails every time if I try and use more than one. Any ideas what I'm doing wrong?

+1  A: 

You have to cast the result as UIRemoteNotificationType:

(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)

This way the method got what it is expecting.

Laurent Etiemble
This was correct but I accepted KennyTM's answer as it provided the detail why. Thanks.
Daniel Wood
+1  A: 

You're probably using Objective-C++, which implicit conversion from int to an enum is disallowed.

Try to add an explicit cast:

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