2010-04-06 38 views
5

我試圖用這個相當標準行代碼在我的應用程序:UIRemoteNotificationType無效轉換

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

,但我收到如下錯誤:

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

它的工作原理,如果我只用一個的通知類型,但每次都失敗,如果我嘗試使用多個。任何想法我做錯了什麼?

回答

14

您可能正在使用Objective-C++,其中隱式從int轉換爲枚舉是不允許的。

嘗試添加一個明確的轉換:

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

你必須把結果作爲UIRemoteNotificationType:

(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound) 

這樣的方法得到了它期待。

+0

這是正確的,但我接受KennyTM的答案,因爲它提供了詳細的原因。謝謝。 – 2010-04-06 12:36:21

1

使用此:這將解決烏爾問題。

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