渐进式编程课
Swift 目录
第 19 课2026.09.28

仅在加载成功且课程数量为正数时,生成界面提示文字。

第 19 课:把可用课程数量转换成提示

  • 日期:2026-09-28
  • 课程序号:第 19 课
  • 知识点:Optional.map(_:)

用途或适用场景

仅在加载成功且课程数量为正数时,生成界面提示文字。

核心概念

Optional.map 只在值非 nil 时执行转换闭包;nil 保持 nil,无需再次匹配 LoadState。

最小代码或操作示例

swift
// 沿用第 18 课的 LoadState 与 positiveCount(_:)。
func statusText(_ state: LoadState) -> String? {
    positiveCount(state).map { "\($0) 节课程可用" }
}
print(statusText(.ready(count: 3)) as Any)
print(statusText(.loading) as Any)

3~5 分钟练习

传入 .ready(count: 0) 与 .failed(message: "网络错误"),观察闭包是否运行。

参考答案

两者的 positiveCount 都是 nil,结果也是 nil,不会生成“0 节课程可用”或错误提示。

与上一课的联系

沿用第 18 课 guard case 提取出的 Int? 正数数量;本课只用 Optional.map 转成 String?;下一课可为无可用数量的状态提供独立显示文案。

时效校验

时效校验:2026-09-28(已打开 Apple Developer 当前 Swift Optional.map(_:) 官方 Markdown 参考;文档未标废弃,示例不依赖新增平台 API)。

官方参考