专注、坚持

开启第一个 30 天挑战 —— SwiftUI

2022.07.03 by kingcos
Preface · 序
公众号内容同步备份 - 人生应当是 BFS,而非 DFS。。
  • 本篇文章首发自我的公众号:

萌面大道


是的,没错,我又想开一个新坑了。


前段时间,我开始在备忘录里分析和记录自己的弱点,并尝试冷静地思考如何改善,亦或扬长避短。坦白说,其中一个较为严重的弱点是:不坚持。我有一些好的想法或者灵感,但总是会因为缺乏坚持而只是浅尝辄止,没有达到积累的复利。我还十分「选择困难」,总是想要选中一个「既要又要还要」的选项,但这样本身就是一种幻想。

最近偶然读到一本关于财富和幸福的书,其中的许多观点也和我产生了共鸣,比如:

培养迭代思维。生活中所有的回报,无论是财富、人际关系,还是知识,都来自复利。

(如果你想了解这本书,或者我的书摘,可以点击下方「阅读原文」即可跳转。)

所以,与其沉溺在自我的缺点中,不如行动起来,尝试改变吧,即使失败了也没有什么损失。

30 天挑战

丑话说在前面。我其实很清楚,30 天对于一个习惯的养成或是技能的习得来说都很短,所以 30 天只是起步,如果它能融入到我的生活,那就再好不过了。好处是,30 天相比一两周要长,可以让我有更好的完成度;对于实在无法坚持的内容也能及时止损。喔对了,虽然我的备忘录里已经写满了我想要挑战的内容,但 30 天挑战每次只对应一个挑战,也摒弃了「选择困难」。

为了挑战能够完成(不要打脸),我希望从最简单、最容易的事情开始,所以我选择了 SwiftUI —— 和我的老本行相关的一项内容。每次开始挑战前,我都会尝试粗略地定义好输入和输出,输入即我会通过什么资源学习,输出即完成挑战时,我能带给大家或者他人一些什么。这样既避免了我在过程中心猿意马,也可以给其他同学参考的价值和意义,有了输出我也可以更好地和大家分享。

输入

如有余力:

输出

  • 更新挑战于社交平台
  • FOCUS app
    • 暂不考虑设计、动效等其他额外附加项

每日记录

Day 8-9 - 07.02-03

  • 学习 SwiftUI 与 Combine 编程

输出:

Day 6-7 - 06.30-07.01

暂无进展。

Day 5 - 06.29

  • 学习 SwiftUI 与 Combine 编程

输出:

Day 4 - 06.28

  • 学习 Apple 官方 Sample Apps Tutorials 之 Responding to User Input 部分
  • 学习 SwiftUI 与 Combine 编程

输出:

Day 3 - 06.27

  • 学习 Apple 官方 Sample Apps Tutorials 之 Presenting Content & Retrieving Content from a Server
    • 其中 Editing Grids demo 涉及一些动画可参考

笔记:

  • @Binding
    • 将绑定值传递到子视图时,该子视图可以修改其值,但只有父视图存储实际值
  • @State
    • SwiftUI 识别变化并更新 UI
  • AsyncImage
  • .task
    • 当视图首次显示时执行
  • ColorPicker

Day 2 - 06.26

  • 学习 Apple 官方 Sample Apps Tutorials 之 Navigating Apps
    • 其中 Date Planner demo 比较有参考意义

笔记:

  • @StateObject
    • 每当数据发生更改时,SwiftUI 会自动更新使用(或观察)它的所有视图
    • 修饰的类型必须为 ObservableObject,内部的变量可以使用 @Published
  • ObservableObject
    • 如果其发布的任何值发生更改,SwiftUI 会通知所有观察者(使用这些值的视图)并自动更新这些视图
  • @Published
    • 可以指示 SwiftUI 在其发生更改时通知所有观察者并更新其视图
  • @EnvironmentObject
    • 访问最顶层注入的环境对象(.environmentObject
    • 修饰的类型必须为 ObservableObject

Day 1 - 06.25

  • 完成学习 Apple 官方 SwiftUI Tutorials
    • 将老版 demo 更新
    • macOS 部分内容暂跳过(暂不涉及)
    • 整体基于 iOS 14,相较于老版有部分更新(使用新 API 等)
  • 在 GitHub 上找到一些 SwiftUI 开发的开源 app

阅读原文