You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中可选字符串解包时是否有内联空值检查方法?

Swift 一行代码安全拼接可选姓名字段

问题原因

你的代码使用!强制解包可选值,当lastName、firstName或middleName任意一个为nil时,就会触发Fatal error: Unexpectedly found nil while unwrapping an Optional value运行时错误。

一行代码解决方案

可以通过过滤空值+分段拼接的方式实现安全的姓名拼接,同时避免多余的分隔符:

let fullName = [passenger.lastName, [passenger.firstName, passenger.middleName].compactMap { $0 }.joined(separator: " ")].filter { !$0.isEmpty }.joined(separator: ", ")

代码说明

  1. [passenger.firstName, passenger.middleName].compactMap { $0 }:过滤掉firstName和middleName中的nil值,得到非空的名字数组
  2. .joined(separator: " "):将名字数组用空格拼接成完整的名(如果两个字段都为nil,则得到空字符串)
  3. 外层数组[passenger.lastName, ...]:将姓和处理后的名放入数组
  4. .filter { !$0.isEmpty }:过滤掉数组中的空字符串(避免姓或名为空时出现多余的, 分隔符)
  5. .joined(separator: ", "):将剩余的非空部分用, 拼接成最终的全名

示例效果

  • 当lastName = "Gates",firstName = "Darren",middleName = nil → 结果为"Gates, Darren"
  • 当lastName = "Gates",firstName = "Darren",middleName = "John" → 结果为"Gates, Darren John"
  • 当lastName = nil,firstName = "Darren",middleName = "John" → 结果为"Darren John"
  • 当lastName = "Gates",firstName = nil,middleName = nil → 结果为"Gates"

内容的提问来源于stack exchange,提问作者Darren Gates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:13:09