第 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 约束;未见废弃标记)。