gpt4 book ai didi

ios - 如何从 json Result In swift 中删除可选文本

转载 作者:行者123 更新时间:2023-11-28 07:22:00 25 4
gpt4 key购买 nike

我正在使用 newsApi 从中获取新闻列表。我根据新闻的属性创建了模型,所有属性在模型中都是可选的,当我解析它打印到控制台获取结果时,但所有字段都有带有可选文本的数据

我创建了三个基于新闻 api 字段的结构,它们就像

struct GoogleNews: Codable {
var status: String?
var totalResults: Int?
var articles: [Article]
}

struct Article: Codable {
var source: Source
var author: String?
var title: String?
var description: String?
var url: String?
var urlToImage: String?
var publishedAt: String?
var content: String?
}

struct Source: Codable {
var id: String?
var name: String?
}

调用应用程序

URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else {return}

do {
let allNews = try JSONDecoder().decode(GoogleNews.self, from: data)
print(allNews.articles[0])
} catch let error {
print(error.localizedDescription)
}
}.resume()

调用 api 后,所有字段的结果都是带有可选文本的结果

name: Optional("Venturebeat.com")), author: Optional("Dean Takahashi"), title: Optional("How Paymentwall’s Terminal3 lets game developers create their own online shops"), description: Optional("Paymentwall built a business as a global payments platform, with much of its focus on games. Last year, the company spun out its Terminal3 as a platform for monetizing and distributing games. Now it is making it easier for indie, small, and medium-size game c…")...ect

从结果中删除可选文本的解决方案应该是什么..

最佳答案

对于您的结构中可选的值,请确保它们是可选的,因为您肯定知道在某些情况下不会返回值。如果您想打开它们,有两种方法。

第一种方法是使用 if-let 语句,它看起来像这样:

if let name = allNews.articles[0].name {

}

在大括号内是您将使用变量 name 的地方,这不是您要询问的可选值,因为它已被展开。

您可以使用的第二种方法是guard 语句,如下所示:

guard let name = allNews.articles[0].name else { return }

在这种情况下,name 变量将被解包并且可以在代码范围内的任何地方使用。但是,它只有在可以成功解包时才有效。如果不能,则调用 return 语句并跳出它所在的范围。

关于ios - 如何从 json Result In swift 中删除可选文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57759802/

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