在 Swift 2.2 上继续显示错误,但可以成功构建
Keep showing error on Swift 2.2, but can build successfully
升级到Xcode7.3后,Swift2.2.
在代码中,
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"]
if let message = aps!["alert"] as? String {
.....
}
}
它将继续显示此行的错误:
if let message = aps!["alert"] as? String
但如果我构建并 运行,它将 运行 成功,没有任何问题。
但是,它在我编码时不断出现,这很烦人。
有办法解决这个问题吗?
尝试清理您的构建文件夹和派生数据。如果这不起作用,解包你的变量或使用可选链接应该抑制警告
if let aps = info["aps"] {
if let message = aps["alert"] as? String {
// ...
}
}
或
guard let message = info["aps"]?["alert"] as? String else {
return
}
// ...
func handleInfo(info: [NSObject: AnyObject]) {
guard let aps = info["aps"] as? [String: AnyObject],
message = aps["alert"] as? String else {
return
}
// do something with message
}
我终于弄清楚如何摆脱这些错误了。
在Swift 2.2中,它对数据类型应用了更严格的规则。
所以如果Dictionary中有一个key的值也是一个Dictionary,我们就需要指定它的数据类型。
所以最初,我们有代码:
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"]
if let message = aps!["alert"] as? String {
.....
}
}
现在 Swift 2.2 将是:
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"] as! [String: AnyObject]
if let message = aps!["alert"] as? String {
.....
}
}
然后行中显示的错误将消失。
升级到Xcode7.3后,Swift2.2.
在代码中,
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"]
if let message = aps!["alert"] as? String {
.....
}
}
它将继续显示此行的错误:
if let message = aps!["alert"] as? String
但如果我构建并 运行,它将 运行 成功,没有任何问题。 但是,它在我编码时不断出现,这很烦人。
有办法解决这个问题吗?
尝试清理您的构建文件夹和派生数据。如果这不起作用,解包你的变量或使用可选链接应该抑制警告
if let aps = info["aps"] {
if let message = aps["alert"] as? String {
// ...
}
}
或
guard let message = info["aps"]?["alert"] as? String else {
return
}
// ...
func handleInfo(info: [NSObject: AnyObject]) {
guard let aps = info["aps"] as? [String: AnyObject],
message = aps["alert"] as? String else {
return
}
// do something with message
}
我终于弄清楚如何摆脱这些错误了。 在Swift 2.2中,它对数据类型应用了更严格的规则。
所以如果Dictionary中有一个key的值也是一个Dictionary,我们就需要指定它的数据类型。
所以最初,我们有代码:
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"]
if let message = aps!["alert"] as? String {
.....
}
}
现在 Swift 2.2 将是:
func handleInfo(info: [NSObject: AnyObject]) {
let aps = info["aps"] as! [String: AnyObject]
if let message = aps!["alert"] as? String {
.....
}
}
然后行中显示的错误将消失。