会议计划
会议计划为你提供俱乐部活动建议,帮助你学习 SwiftUI 基础知识以及数据建模、机器学习和空间计算的基础知识。
会议计划为你提供俱乐部活动建议,帮助你学习 SwiftUI 基础知识以及数据建模、机器学习和空间计算的基础知识。
如果你之前从未使用过 Xcode、Swift 或 SwiftUI,请从“SwiftUI 基础知识”开始学习。
5 个独立完成的教程
10 次会议 (包含团体活动)
通过使用 SwiftUI 构建 App 来学习 App 开发的基础知识。按照分步教程操作,创建原型、App 屏幕和功能完备的 App。然后在俱乐部的帮助和支持下,运用所学到的知识创作属于你的独特作品。
注:你无需 iPhone 也可以预览 App。Xcode 中包含的工具可以直接在 Mac 上为你展示 App 的视觉效果和运作方式。
请先阅读欢迎学习“使用 Swift 开发”教程。
通过创建即时通讯 App 的原型来了解 Xcode 和 SwiftUI。了解 Swift 的语法,以及如何使用源代码编辑器和预览。
准备工作:在第 1 次会议之前完成“初识 SwiftUI” 教程。
团体活动:以小组形式或全体一起完成《总结:探索 Xcode》 一文中“Extend your app”(扩展 App 功能) 部分的两个建议。
准备工作:阅读《总结:探索 Xcode》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:新建一个名为“MyselfInSixWords”的 Xcode 项目。使用 Text
视图显示 6 个描述你的词。为每个词设置一定的边距和不同的背景色。将
替换为 VStack
HStack
,尝试横向显示这些词。然后,为了增加挑战难度,请结合使用 HStack
和 VStack
视图,为 App 创建不同的布局。你能否将一个 HStack
视图嵌套在一个 VStack
视图中,或者反过来。如果这样做会怎样?
会议结束时,每人花几分钟时间来展示你的 MyselfInSixWords 项目。
了解如何构建自定义视图以创建多日天气预报。你将在视图中使用属性来自定义每一天的显示内容。
准备工作:完成“使用属性自定义视图” 教程。
团体活动:以小组形式或全体一起完成《总结:视图、结构体和属性》 一文中“Extend your app”(扩展 App 功能) 部分的一个或两个建议。
准备工作:阅读《总结:视图、结构体和属性》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:练习使用计算属性。添加一个计算属性,在最高气温高于 80 华氏度 (high > 80
) 时返回不同的颜色。使用 .foregroundStyle
修饰符,根据该属性的值更改文本颜色。
每人花几分钟时间来展示你的成果。记下你能添加到项目中的内容,以及你还需要协助或需要时间才能完成的内容。
为 iOS App 构建两个新手引导屏幕,帮助用户了解有用的工具,将视图放置在屏幕上的理想位置并查看其尺寸。在资源目录中定义颜色,并使用它们创建渐变背景。
准备工作:阅读《总结:布局和样式》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:练习轻扫切换多个视图。新建一个 Xcode 项目,并使用 .tabViewStyle(.page)
创作一个简短的故事,实现轻扫切换书页。将第一个页面设计为书的封面,加上大标题、作者姓名、一个或多个 SF Symbols 符号,以及一些色彩点缀。对于故事中的页面,想出有创意的方式来显示章节标题、文本和图片。
每人花几分钟时间展示你在图书项目中取得的成果。讨论你计划继续改进哪些内容。
了解如何将按钮添加到 App。了解 Swift 闭包及其与按钮的关系。使用状态属性来自动更新用户界面。
准备工作:阅读《总结:按钮和状态》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:创建一个简单的按钮 App。新建一个 Xcode 项目,并设计一个包含一到两个按钮的 App。你可以使用设计一个简单的 App 项目来帮助你构思。
每人花几分钟时间展示你的按钮 App 设计和项目。与你的俱乐部分享你认为比预期更容易和更困难的事情。
创建一个动态界面,以数组形式储存一组项目,并用列表显示这些项目。使用文本栏和绑定来让用户输入文本。
准备工作:阅读《总结:列表和文本栏》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:设置地址标签的格式。新建一个名为“AddressLabel”的 Xcode 项目。使用 @State
属性和文本栏收集地址的不同元素,例如城市和国家/地区。然后在屏幕顶部显示完整格式的地址。自定义登记表单和地址的字体、大小和颜色。
每人花几分钟时间,分享你打算在此次俱乐部结束后做些什么。你会如何继续学习 App 开发?你想开发什么 App?
7 个独立完成的教程
9 次会议 (包含团体活动)
通过使用 SwiftUI 构建 App 来学习数据建模的基础知识。按照分步教程操作,创建原型和功能完备的 App。然后在俱乐部的帮助和支持下,运用所学到的知识创作属于你的独特作品。
注:你无需 iPhone 或 iPad 也可以预览 App。Xcode 中包含的工具可以直接在 Mac 上为你展示 App 的视觉效果和运作方式。
请先阅读欢迎学习数据建模。
通过创建自己的自定义类型来定义你的首个数据模型,并利用单元测试证明该模型能正常运行。然后,使用自定义类型来跟踪游戏中的分数。
准备工作:完成“使用自定义类型为数据建模” 教程,并阅读《总结:使用自定义类型为数据建模》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:以小组形式或全体一起完成《总结:使用自定义类型为数据建模》 一文中“Extend your app”(扩展 App 功能) 部分的一个建议。
准备工作:完成“通过 Swift 测试添加功能” 教程,并阅读《总结:自定义类型和 Swift 测试》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:算出获胜总分数。更新你的 App,在玩家达到特定总分数时自动结束游戏。用户应该能在设置视图中配置这个总分数。添加测试以增加玩家的总分数,并验证达到总分数时游戏状态发生变化。
会议结束时,每人花几分钟时间来展示你如何将项目改进为在玩家达到指定分数时自动结束游戏。
构建一份朋友们的生日列表,使用 SwiftData 来在多次启动之间存储和检索这些数据。
准备工作:阅读《总结:模型和持久性》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:完善 Pick-a-Pal 的功能。重新访问 Pick-a-Pal,并将 names: [String]
替换为由 SwiftData 提供支持的 Pal
模型。
花几分钟时间,以小组形式讨论将 SwiftData 加入“Pick-a-Pal”App 有哪些益处。
创建一个 App,使用 SwiftData 来管理模型对象,以跟踪朋友及其最喜欢的电影。使用查询以列表形式显示项目,并创建详细视图以进行编辑。然后学习如何创建并显示朋友和影片之间的关系,并探索如何创建高级查询。
准备工作:完成“浏览示例数据” 教程并阅读《总结:浏览示例数据》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:重新访问 Birthdays 并实现 SampleData
类,这样你就不必依赖 .task
来插入示例数据。
准备工作:完成“创建、更新和删除数据” 教程并阅读《总结:创建、更新和删除数据》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:创建一个 iOS App 项目,并在“Project Options”对话框中选择“SwiftData”存储方式。检查示例代码。你应该会注意到它与你在前面两个教程中构建的界面非常相似。你已经了解了它的工作方式,现在可以此为起点创建你的下一个 App。
准备工作:完成“处理关系” 教程并阅读《总结:导航、编辑和关系》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:以小组形式或全体一起完成《总结:导航、编辑和关系》 一文中“Extend your app”(扩展 App 功能) 部分的一个或两个建议。
利用 Observation 来驱动字母游戏。多个独立视图共享一个复杂数据模型。
准备工作:完成“制作一个逻辑游戏” 教程。
团体活动:以小组形式或全体一起完成《总结:Observation 和可共享数据模型》 一文中“Extend your app”(扩展 App 功能) 部分的一个或全部两个建议。
团体活动:难度模式。添加难度模式,让游戏更具挑战性。比如让玩家在提交错误顺序时被扣分而不是重玩。你还可以更进一步,将词隐藏起来,让玩家只根据图标来进行字母排序。
每人花几分钟时间,分享你打算在此次俱乐部结束后做些什么。你会如何继续学习 App 开发?你想开发什么 App?
4 个独立完成的教程
8 次会议 (包含团体活动)
通过使用 SwiftUI 构建 App 来学习机器学习的基础知识。按照分步教程操作,创建功能完备的 App。然后在俱乐部的帮助和支持下,运用所学到的知识创作属于你的独特作品。
注:你无需 iPhone 也可以预览 App。Xcode 中包含的工具可以直接在 Mac 上为你展示 App 的视觉效果和运作方式。
请先阅读欢迎探索机器学习。
通过 Natural Language 框架和情感分析来探索机器学习。创建一个 App,用于收集徒步旅行相关意见、分析响应并以可视化方式展示结果。
准备工作:在会议前完成“文本情感分析” 教程。
团体活动:以小组形式,借助 Natural Language 框架扩展 Scorer
的功能,使其还能返回响应所用的语言。更新 Response
以存储这一新信息,并通过 ResponseView
进行展示。
会议结束时,留出几分钟时间,让每个小组分享他们选择如何展示这些信息并使信息易于阅读。
准备工作:阅读《总结:Natural Language》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:以小组形式,将 Sentiment 枚举从三种用例更新为五种。确定如何标记它们、如何在它们之间划分情感分数范围,以及如何在 UI 中展示它们,你还可以使用 SF Symbols 的图标。
接下来,在 App 的样本集中添加响应,看看它们的评分是否符合预期,并确认能不能为每种枚举用例创建一个新的响应。
会议结束时,以小组形式花几分钟时间讨论你使用过的可能包含情感分析的 App。你有没有觉得某些你用过的 App,如果加入情绪分析功能,会变得更好用?
创建一个 App,使用机器学习 Vision 框架和 Translation 框架识别图像中的文本,并将其翻译成另一种语言。
准备工作:在会议前完成“从图像中提取文本” 教程。
团体活动:以小组形式,先制作标识图像副本,然后裁剪出仅包含文本的标识部分。将裁剪后的图像添加到 App 中,然后对 App 进行更改,让用户可以选择偏好的识别级别,以优先保证速度或准确性。在优先保证速度的情况下,测试裁剪后图像与原始图像的识别效果有什么不同。
接下来,根据识别文本的可信度值,更改边界矩形框的颜色。再次比较原始图像和裁剪后图像的识别结果。
会议结束时,花几分钟时间讨论关于输入图像的学习心得。
准备工作:阅读《总结:识别图像中的文本》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:以小组形式设计一种方式,让用户在 Vision 框架提供多个识别候选结果时从这些结果中进行选择。可以考虑添加一个新的控件供用户选择,或使用键盘来修正识别有误的结果。
会议结束时,留出几分钟时间,让每个小组展示各自的解决方案。然后,以小组形式讨论如何借助 Vision 框架打造一款对自己有用的 App。
使用 Xcode 中的 Create ML 工具来训练机器学习模型。使用提供的数据来训练模型,让它能根据距离和海拔等特征来预测徒步路线的难度等级。
准备工作:在会议前完成“训练 Core ML 模型” 教程。
团体活动:以小组形式或全体一起,调整线性回归算法的参数。你能不能改进模型结果?你能不能缩短训练时间,同时保持模型质量不变?
会议结束时,花几分钟时间分享所做的调整,以及在准确性或速度方面提升了多少。
准备工作:阅读《总结:使用 Create ML 训练模型》 一文中的“Reflect on the concepts”(回顾概念) 部分。确定一个根据数据来计算风险值的数学公式。如果公式预测的风险值与 App 预测的结果大致相同,则说明公式正确。提示:预览 TrailData1k.csv 可能有助于分析各个字段。
团体活动:以小组形式,使用徒步路线数据来训练模型,预测除风险值之外的其他指标——可以是海拔、距离,或者是不是存在危险野生动物。
然后,以小组形式讨论还有哪些类型的 App 可以使用 Create ML 模型来构建。
将机器学习模型导入一款 App,这款 App 会获取徒步旅行的详细信息,并显示这些徒步旅行可能的难度等级。
准备工作:在会议前完成“使用 Core ML 导入模型” 教程。
团体活动:以小组形式或全体一起,更改 App 中的风险设置。这个教程中的风险类别假定 App 用户是徒步爱好者。需要为业余徒步爱好者调整风险参数,然后创建 UI 来显示具体风险值。探索除单纯以文本形式显示数字风险值之外的其他展示方式。你能不能找到一种方法,用于展示某条徒步路线的风险与其他徒步路线风险的对比情况?
会议结束时,花几分钟时间来讨论还可以使用哪些参数作为输入。这些参数如何提高结果的准确性,或为其他使用这个 App 的用户提供支持?
准备工作:阅读《总结:使用 Core ML 自定模型》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:以小组形式,将“提交”按钮替换为风险预测的实时更新功能。提示:当输入状态变化时,使用 .onChange
触发更新。
每人花几分钟时间分享接下来想开发的内容。你会如何继续学习 App 开发?你想开发什么 App?
3 个独立完成的教程
6 次会议 (包含团体活动)
通过使用 SwiftUI 构建 App 来学习空间计算的基础知识。按照分步教程操作,创建原型和功能完备的 App。然后在俱乐部的帮助和支持下,运用所学到的知识创作属于你的独特作品。
注:你无需使用 Apple Vision Pro 设备。Xcode 中包含的工具可以直接在 Mac 上为你展示 App 的视觉效果和运作方式。
请先阅读欢迎学习空间计算。
使用 SwiftUI,打造你的首个带窗口的 visionOS App。
准备工作:在第 1 次会议前完成“为 App 添加深度” 教程。
团体活动:以小组形式或全体一起完成《总结:visionOS 中的窗口》 一文中“Extend your app”(扩展 App 功能) 部分的两个建议。
准备工作:阅读《总结:visionOS 中的窗口》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:创建词语网格。新建一个名为“CloserWordGrid”的 Xcode 项目。使用 Grid
和 GridRow
来创建一个词语网格,这些词是能描述你的词语。为每个词添加一些后边距。为了增加挑战难度,请随机选择一个词来添加额外的后边距,看看你能否每次都猜出哪个词最靠前。
会议结束时,每人花几分钟时间来展示你的 CloserWordGrid 项目。分享这个新平台给你带来的启发,以及你打算如何在下一个 App 中利用这些新的机会。
使用 SwiftUI 在 visionOS 中创建多个窗口。使用装饰元素提供对常用控件的访问,同时避免窗口内容显得拥挤或被遮挡。
准备工作:完成“在装饰元素中呈现常用控件” 教程。
团体活动:以小组形式或全体一起完成《总结:装饰元素和多个窗口》 一文中“Extend your app”(扩展 App 功能) 部分的一个或全部两个建议。
准备工作:阅读《总结:装饰元素和多个窗口》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:添加一项功能以快速访问标签。你创建的标签可以关闭或隐藏在其他标签后面。创建一个 SwiftUI 列表
,你可以从中选择一个标签,让它成为焦点。从该列表中选择一个标签后,使用 openWindow
将该标签置于前景中,并在必要时重新打开它。
每人花几分钟时间来展示你的成果。记下你完成了的内容,以及你还需要协助或需要时间才能完成的内容。
使用 Reality Composer Pro 和 SwiftUI 在共享空间中从任意角度查看 3D 内容。
准备工作:完成“在共享空间中创建 3D 模型” 教程。
团体活动:以小组形式或全体一起完成《总结:visionOS 中的体积》 一文中“Extend your app”(扩展 App 功能) 部分的一个或全部两个建议。
准备工作:阅读《总结:visionOS 中的体积》 一文中的“Reflect on the concepts”(回顾概念) 部分。
团体活动:探索“Hello World”。下载“Hello World”App 并探索代码。从 WorldApp 文件开始,看看其中有多少感觉熟悉的内容。数一数用了多少个 WindowGroup
场景。注意使用了体积窗口样式的位置。阅读代码注释以尽可能多地学习。准备就绪后,尝试对项目稍加更改。
每人花几分钟时间,分享你打算在此次俱乐部结束后做些什么。你会如何继续学习 App 开发?你想开发什么 App?