在 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 代码返回“表达式类型不明确,没有更多上下文”

swift 2.0 healthkit requestAuthorizationToShareTypes - 表达式类型不明确,没有更多上下文

Swift:使用 URLSession 的“表达式类型不明确,没有更多上下文”

Swift for 循环“表达式类型 '[[String : String]]' 在没有更多上下文的情况下模棱两可