在 Swift 3 中没有更多上下文的表达式类型是模棱两可的
Posted
技术标签:
【中文标题】在 Swift 3 中没有更多上下文的表达式类型是模棱两可的【英文标题】:Type of expression is ambiguous without more context in Swift 3 【发布时间】:2016-10-11 05:06:01 【问题描述】:我正在尝试学习 Swift,并且正在阅读有关推送通知的教程。
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge , .Sound], categories: nil)
给我错误
“没有更多上下文,表达式的类型是模棱两可的”。
我直接从教程中复制/粘贴了这一行,并在 *** 上发现了这一行。我做错了什么?我使用的是 Xcode 8。
【问题讨论】:
我认为这只野兽在那边吗? ;) balancedcode.com/blog/files/… 我不得不使用 xCode 的 Swift 3 提示来处理它。 【参考方案1】:查看UIUserNotificationSettings
的文档。它的签名在 Swift 3 中发生了变化,类型的值也发生了变化。
你需要:
let settings = UIUserNotificationSettings(types: [.alert, .badge , .sound], categories: nil)
当然,如果您只支持 ios 10 及更高版本,那么您根本不应该使用 UIUserNotificationSettings
,因为它现在已被弃用。请改用UNNotificationSettings
。但是,如果您仍然支持 iOS 9 或更早版本,那么只要更改为更新的语法,使用 UIUserNotificationSettings
就可以了。
【讨论】:
非常感谢,麦迪。我知道 ios 10 及更高版本应该使用 UNNotificationSettings 类,但我才刚刚开始,只能找到 ios 9 的手持教程。所以我将从那里开始。【参考方案2】:UIUserNotificationSettings
在 iOS 10 中已被 UNNotificationSettings
弃用,如果您想实现 UNNotificationSettings
,请按如下方式实现。
首先你需要为此导入UserNotifications
。
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge , .sound])
(granted, error) in
有关此问题的更多详细信息,请查看 tutorialUserNotifications.framework
上 Michał Kałużny 的 UserNotifications.framework
【讨论】:
以上是关于在 Swift 3 中没有更多上下文的表达式类型是模棱两可的的主要内容,如果未能解决你的问题,请参考以下文章
Swift 本地通知:没有更多上下文的表达式类型是模棱两可的
放入函数时,工作 Swift 代码返回“表达式类型不明确,没有更多上下文”
swift 2.0 healthkit requestAuthorizationToShareTypes - 表达式类型不明确,没有更多上下文