如何从 json 结果中快速删除可选文本

2023-12-08

我正在使用 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?
}

调用appi

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 let name = allNews.articles[0].name else { return }

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 json 结果中快速删除可选文本 的相关文章

  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • 如何在 Swift 中使用 CGFloat?

    var posinonY Float Float y Float pipeDown size height Float verticalPipeGap pipeDown position CGPointMake 0 0 Float posi
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 将新属性动态添加到 Node 中现有的 JSON 数组中

    我需要添加当前 JSON 中不存在的属性 json 对象如下所示 var jsonObj result OK data 我想在 数据 中添加温度 我可以像下面那样做 jsonObj data push temperature 然后 我想在
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • POST 表单数据为 application/json

    我正在开发一个 API 它接收 application json post 请求 并触发一些流程 我目前的主要问题是发送一个 application json 帖子 其中包含来自输 入表单的数据 我已经尝试过 jQuery ajax 但由于
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • json、rails、javascript 中的解析错误

    我需要将 ruby 数组放入 javascript 数组中 但出现解析错误 var characters 这就是我将 ruby 嵌入到内联 javascript 中的方式 但它出现了解析错误 我应该如何将此 ruby 数组放入 javasc
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • 具有多种自定义单元格类型的 RxSwift 表视图

    我想知道是否有任何代码示例RxSwift当我可以在一个表视图中使用多个自定义单元格时 例如 我有两个部分 第一部分有 10 个单元格 类型为CellWithImage标识符和第二部分有 10 个带有类型的单元格CellWithVideo标识
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 如何在 Swift 语言中传递错误指针?

    我试图在 swift 中传递错误指针 但无法这样做 编译器抱怨 NSError 无法转换为 NSErrorPointer var error NSError NSError var results context executeFetchR
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • 使用 std::chrono 在 C++ 中输出日期和时间

    我一直在升级一些旧代码 并尽可能更新到 c 11 以下代码是我在程序中显示时间和日期的方法 include
  • 如何使用 picasso 库实现我自己的磁盘缓存 - Android?

    我正在使用 picasso 库为我的应用程序加载图像 但我不知道如何使用 picasso 库实现我自己的磁盘 sdcard 缓存 Picasso 使用 HTTP 客户端进行磁盘缓存 如果已经配置 它将使用该客户端而不是安装自己的客户端 对于
  • 更改 UISegmentedControl 的高度

    我正在尝试改变高度UISegmentedControl使用此代码 CGRect frame mySegmentedControl frame mySegmentedControl setFrame CGRectMake frame orig
  • 我只需要重写 Toast 类的 show()

    我只需要覆盖show 方法为Toast班级 我创建了一个扩展的类Toast类 但随后我创建了一条 toast 消息 但出现异常setView View view 还没有被调用 但我不想创建自定义View方法 但使用默认方法 那么 如何才能覆
  • SecurityAttribute.Unrestricted 问题

    我对这个属性感到困惑 正如这里提到的 http msdn microsoft com en us library system security permissions securityattribute unrestricted aspx
  • 使用自定义 CSS 将 HTML 文件加载到 WebView

    我的 Android 应用程序上有一个 WebView 可以加载 WebView loadUrl 手机内部存储中的不同本地 HTML 文件 我想为它们添加一些自定义 css 样式 现在 我可以让我的应用程序编辑每个 HTML 文件并添加 C
  • scipy curve_fit 不喜欢数学模块

    在尝试创建一个示例时scipy optimize curve fit我发现scipy似乎与Python的不兼容math模块 而函数f1工作正常 f2抛出错误消息 from scipy optimize import curve fit fr
  • 添加到词典的不同方式

    有什么区别Dictionary add key value and Dictionary key value 我注意到最后一个版本没有抛出ArgumentException插入重复密钥时 但有什么理由更喜欢第一个版本 Edit 请问谁有这方
  • 警告:无法访问代码,使用 Reactjs

    我正在使用 ReactJs 我有两个组件 PrescriptionIndex 和 PrescriptionNew 将一个组件与另一个组件集成 这是我的第一个组件 PrescriptionNew import React Component
  • 为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序?

    由于某种原因 当我添加到优先级队列时 它不会完全按字母顺序对我的字符串进行排序 我不明白为什么 这是添加到 PriorityBlockingQueue 的代码 String toAdd String format s s directory
  • 在 JTextField 上设置光标

    我正在用 Java 制作一个使用 JTextField 的小型应用程序 现在 我希望 一旦运行应用程序 光标就会自动放置在该位置 以便用户不必单击它然后编写文本 我已经尝试了在网上找到的几乎所有内容 setCaretPosition 0 g
  • 如何使用 cmake 将 git SHA1 作为定义传递给编译器?

    在 Makefile 中 这可以通过以下方式完成 g DGIT SHA1 git log 1 head n 1 这非常有用 因为二进制文件知道确切的提交 SHA1 因此可以在发生段错误时转储它 我怎样才能用 CMake 达到同样的效果 我制
  • 在 Python 中保存图像的最佳格式是什么,为什么 pydot 会保存无效图像?

    我在用pydot在我的机器上保存图像文件 然后使用图像模块打开该文件 但是 我使用时遇到错误Windows Photo viewer 该图像无法打开 因为它已被删除或位于不可用的位置 这是不正确的 因为图像被保存到我的桌面上 有时 图片确实
  • redis 好像服务器已经关闭了连接

    我想使用redis sub pub 但是当我订阅一个频道时 2分钟后 控制台输出异常 服务器似乎已关闭连接 redis版本 redis 3 0 3 jedis版本 2 3 0 操作系统 OS X Yosemite 10 10 5 订阅 cl
  • 连接到 Firebird 3 的 C# 程序中的“连接被远程接口拒绝”

    从 Firebird 2 5 迁移到 3 0 后 当我尝试使用 C 程序测试数据库连接时 会出现此错误 连接被远程接口拒绝 这是用于测试连接的代码 当我尝试连接到 firebird 2 5 数据库时我使用此代码 txtPassword Pr
  • 使用 PHP 访问 Windows 共享

    我需要使用 PHP 访问 Windows 共享上的 Excel 文件 但似乎遇到了身份验证问题 我在用着PHP ExcelReader打开并读取文件 在我的本地计算机上工作正常 但我放置它的服务器无权访问此共享 因此它告诉我该路径不可读 我
  • 如何使用 OleDB 避免 Excel 文件中的空行?

    我开始使用OleDB 我正在尝试从 Excel 文件 C 中 中提取大量随机数据 这是我的查询 SELECT FROM NAMED RANGE 但我有很多空行 我循环删除它们 但我不太喜欢它 是否可以仅选择至少填充了一个单元格的行 此致 A
  • 连接 MongoDB 中的两个集合

    我是 mongoDB 的初学者 我有两本收藏书和作者 姓名和作品 分别是公共栏 使用内部联接 我必须发出 Book 和 Author 中的一些列 就像这个 sql 查询 select book name book editions book
  • 用于单击网页按钮的 Python 脚本

    我有一个 python 脚本 它使用 requests 库将数据发送到 django 应用程序 然后用户切换到网页并单击一个按钮来获取编辑表单以添加一些附加信息 我希望请求收到状态代码 200 后立即切换到网页并自动单击按钮 而不是用户每次
  • 如何从 json 结果中快速删除可选文本

    我正在使用 newsApi 从中获取新闻列表 我根据新闻的属性创建了模型 所有属性在模型中都是可选的 当我解析它时 它会打印到控制台获取结果 但所有字段都有带有可选文本的数据 我创建了三个基于新闻 api 字段的结构 它们就像 struct