gpt4 book ai didi

swift - 虽然使用 "guard let", "not unwrapped"错误

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:57 24 4
gpt4 key购买 nike

我有“可选类型“AnyObject”的值?” not unwrapped did you mean to use !or?" guard let tableauDeux =

行上的错误
func attraperJSON() -> String? {

guard let krakenURL = NSURL(string: "https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR") else {
print("Probleme adresse")
return nil
}
guard let tickerData = NSData(contentsOfURL: krakenURL) else {
print("Problème ticker data")
return nil
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(tickerData, options: [])
guard let tableauUn = json["result"] else {return nil }
guard let tableauDeux = tableauUn["XXBTZEUR"] else { return nil}
let prix = tableauDeux["o"]
return prix
} catch {
return nil
}
}

我不明白为什么守卫 let 不起作用,谢谢!P.S:我知道这里是 swift 2 而不是 3,但我仍在使用 xcode 7

最佳答案

概述:

  • 编译错误消息指出类型错误
  • 正如@David 所说,尽量使用原生类型,只有在绝对必要时才使用 NS 对应类型

代码:

下面的代码在 Xcode 8 上的 Swift 3 中。如果您使用的是旧版本,请进行必要的更改。

func attraperJSON() -> String? {

//Use URL instead of NSURL
guard let krakenURL = URL(string: "https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR") else {

print("Probleme adresse")
return nil
}

guard let tickerData = NSData(contentsOf: krakenURL) else {

print("Problème ticker data")
return nil
}
do {
//Use "as?" to convert to desired type
let json = try JSONSerialization.jsonObject(with: tickerData as Data, options: []) as? [String : Any]

//Use "as?" to convert to desired type
guard let tableauUn = json?["result"] as? [String : Any],
let tableauDeux = tableauUn["XXBTZEUR"] as? [String : String] else {
return nil
}

let prix = tableauDeux["o"]
return prix

} catch {
return nil
}
}

关于swift - 虽然使用 "guard let", "not unwrapped"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com