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

场景保存的导航路径无法解码时,留下可诊断记录,同时继续安全回到根页。

第 19 课:记录导航恢复失败日志

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

用途或适用场景

场景保存的导航路径无法解码时,留下可诊断记录,同时继续安全回到根页。

核心概念

Apple 统一日志的 Logger.error 记录错误级消息;本课只写固定文字,不把可能含课程路径或用户信息的原始数据写入日志。

最小代码或操作示例

swift
import os
// 在第 18 课 LessonView 中新增属性:
private let logger = Logger()

// 只替换 restorePath() 的 catch 分支:
catch {
    logger.error("导航恢复失败,已清理损坏数据")
    self.savedPath = nil
    path = NavigationPath()
}

3~5 分钟练习

沿用第 18 课的损坏 Data([0]),触发一次恢复并检查调试日志与根页状态。

参考答案

日志出现固定错误消息,savedPath 变为 nil、path 为空;日志不包含原始导航数据。设备日志行为需在目标系统上验证。

与上一课的联系

沿用第 18 课 restorePath() 的 catch、savedPath 清理和 NavigationPath() 回退;本课只在清理前增加 Logger.error 诊断消息;下一课可统计恢复成功与失败次数而不记录敏感路径内容。

时效校验

时效校验:2026-09-28(已打开 Apple Developer 当前 Logger、Logger.error 与 NavigationPath 官方 Markdown 参考;Logger 最低 iOS 14/macOS 11,整体示例仍沿用第 17 课的 iOS 17/macOS 14 约束;未见废弃标记)。

官方参考