gpt4 book ai didi

swift - 我的捕获不适用于 url 请求

转载 作者:行者123 更新时间:2023-11-28 15:53:23 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中进行我的第一次 try catch。

本质上,用户可以给某物命名。假设他/她输入 Gmail 并点击提交。

由于 G 是字符串的第一个字母(不管是小写还是大写)图像将加载 G 的图片。

如果用户还添加了一个 URL,例如 gmail.com 或 www.gmail.com,它将拉取 gmail 的图标。

到目前为止一切顺利。

然而。如果此人键入 gmailllllll.com

它加载了一张地球仪图片(我认为这是默认设置)

我想做的只是将 gmail 图标放在 ImageView 中,如果它实际上是图像的话。如果它是 nil,那么我想放置我提供的 G 的图像。

我明白为什么我的代码不起作用。我只是不知道如何添加它来做我想做的事。

 DispatchQueue.main.async {
let myURLString: String = "http://www.google.com/s2/favicons?domain=\(self.serviceArray[row].serviceUrl)"
let myURL = URL(string: myURLString)
do {
let myData = try Data(contentsOf: myURL!)


cell.serviceLogoImage.image = UIImage(data: myData)

} catch {
cell.serviceLogoImage.image = UIImage.init(named: "\(self.getLetterOrNumberAndChooseImage(text: self.serviceArray[row].serviceName))")
}

}

另外,如果用户输入 www.go google.com它有一个可选的 crashe 空间!

我试着说

if myData == nil {...}

但是它说它总是返回 false...

任何帮助将不胜感激

最佳答案

可选绑定(bind)

此解决方案通过可选绑定(bind)避免了强制解包(即 myURL!)。

注意 try? 返回一个可选的。它返回 nil 而不是抛出错误。当您想以相同的方式处理所有错误时,这是​​合适的。

let myURLString: String = "http://www.google.com/s2/favicons?domain=\(self.serviceArray[row].serviceUrl)"
if let myURL = URL(string: myURLString), let myData = try? Data(contentsOf: myURL), let image = UIImage(data: myData) {
cell.serviceLogoImage.image = image
}
else {
cell.serviceLogoImage.image = UIImage.init(named: "\(self.getLetterOrNumberAndChooseImage(text: self.serviceArray[row].serviceName))")
}

关于swift - 我的捕获不适用于 url 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080635/

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