Files
iOS/逐课课纲/部门课06_从输入到清单与内存数据.md

4.6 KiB

部门课 06:从输入到清单与内存数据

教学目标

  • 区分输入框中尚未确认的草稿和已经加入清单的数据。
  • 理解 TextField 通过 Binding 读写当前输入内容。
  • 理解当前 View 可以使用 @State 保存临时字符串和可变数组。
  • 认识模型、单个条目和条目数组之间的关系。
  • 理解按钮如何读取草稿、创建条目并将其加入数组。
  • 观察数组改变后,SwiftUI 如何更新 List。
  • 知道条目需要唯一身份供 List 区分。
  • 知道这些数据只存在于当前运行,重新启动 App 后会恢复初始状态。
  • 能根据授课干部的基础 Demo,将同一数据流迁移为自己的主题清单。

教学内容

本节围绕以下数据流展开:

用户输入
→ TextField 更新草稿
→ 点击添加
→ 检查草稿
→ 创建新条目
→ 加入数组
→ List 更新
→ 清空输入框

主要讲授:

  • draft 与 items 分别承担什么作用。
  • TextField、$draft 和 @State 的关系。
  • 单字段条目模型、唯一身份和数组。
  • Button action 如何读取并修改数据。
  • 使用 append 向内存数组加入新条目。
  • 防止空内容进入清单,并在添加成功后清空输入框。
  • List 怎样根据数组内容显示多条数据。
  • App 重新运行后清单消失的原因,以及它与下一节持久化课程的关系。

授课干部使用一个基础的“临时词条收集器”作为课堂 Demo。Demo 与学员作业同源,基本对应作业的基础版本,包括单字段条目、输入框、添加按钮、列表、空输入处理、添加后清空输入框和重启后恢复为空。

Demo 提前完成并经过 Build/Run,课堂上由授课干部实际敲写和演示关键部分,同时保留完成版作为演示失败时的备用。学员主要观察、预测和讨论,不要求同步跟抄。

本节不展开删除、编辑、搜索、排序、网络、复杂表单、Observable、SwiftData、完整 CRUD 或持久化。

后续细化备课时可参考 Apple 的 TextField 和 Managing user interface state。

课后作业

作业方向为“我的主题清单”。学员从系统 SwiftUI 空白模板开始,可以选择书、电影、游戏、歌曲、食物、愿望或其他非敏感主题。

最低完成标准

  • 项目能够 Build/Run。
  • 有明确的自选清单主题。
  • 使用带唯一身份的单字段条目模型。
  • 使用 @State 保存输入草稿和条目数组。
  • 能通过 TextField 输入内容,并通过按钮把新条目加入 List。
  • 不能加入空内容,添加成功后输入框清空。
  • 能在一次运行中连续加入多条内容。
  • 重新启动 App 后允许恢复为空,不要求保存。

达到最低标准即可视为完成,不要求视觉精致度或额外功能。

建议完成标准

鼓励根据兴趣选择一项或多项尝试:

  • 增加空清单提示。
  • 显示当前条目数量。
  • 自定义 SF Symbol、颜色和列表样式。
  • 支持按回车添加。
  • 为条目增加第二个简单字段。
  • 尝试删除单条内容。
  • 使用 AI 协助解释错误或进行局部改造,并自行运行判断结果。

建议项不作为作业合并和参与记录的门槛。具体题目、功能说明、项目目录、分支、Commit、PR 标题和提交安排,统一放入开课前单独制作的部门课 06 课后作业文档。

验收方式

  • 学员将完整项目源码通过个人 Fork 和作业分支向部门公开仓库发起 PR。
  • 本节涉及输入和动态列表效果,学员可以通过约定渠道发送简短运行视频,授课干部也可以直接取得 PR 源码运行检查。
  • 下节课可选择少量作品轻量复习,形式可以是现场运行、追踪一次数据流,或者简要说明 draft、数组和 List 的关系。
  • 回答不完整用于发现共同问题和安排复习,不作为淘汰或横向排名依据。
  • 未完成时允许提交 Draft PR,记录当前状态、错误和已经尝试的步骤。

验收主要确认最低完成标准是否成立。建议完成内容只用于鼓励探索,不影响基础作业通过。

课纲不规定视频编码、文件格式、大小、完整命令或其他操作细节;这些内容如确有需要,放入单独的课后作业文档。

源码提交、工具故障时的参与记录和隐私边界按共同安排执行;具体材料与操作细节由授课干部在备课阶段准备。