简体   繁体   中英

Type of expression is ambiguous without more context in Swift 3

I am trying to learn Swift and am going through a tutorial on push notifications.

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

Is giving me the error

"Type of expression is ambiguous without more context".

I copy/pasted this line directly from a tutorial and have found this same line used on StackOverFlow.

What am I doing wrong?
I am using Xcode 8.

Look at the documentation for UIUserNotificationSettings . Its signature has changed in Swift 3 as has the values for the types.

You need:

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

Of course if you are only supporting iOS 10 and later, then you shouldn't use UIUserNotificationSettings at all since it is now deprecated. Use UNNotificationSettings instead. But if you are still supporting iOS 9 or earlier, then using UIUserNotificationSettings is fine as long as you change to the updated syntax.

UIUserNotificationSettings is deprecated with UNNotificationSettings in iOS 10, if you want to implement UNNotificationSettings then implement like below.

First you need to import UserNotifications for that.

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge , .sound]) {
     (granted, error) in

}

For more details on this check this tutorial by Michał Kałużny on UserNotifications.framework

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM