Swift 里有好多状态管理 AppStorage, Binding, Environment, EnvironmentObject, FetchRequest, ObservedObject, State, StateObject

2021-05-25 14:46:41 +08:00
 find456789

刚接触 swift 不久

初步发现, 状态管理, 要学这么多

感觉好复杂啊

我打算先学会 Combine, 然后再学 AppStorage,Binding,Environment,EnvironmentObject,FetchRequest,ObservedObject,State,StateObject

不知 前辈们 有建议吗?

谢谢

1474 次点击
所在节点    Swift
4 条回复
hstdt
2021-05-25 15:01:12 +08:00
先入门 Swift 和 SwiftUI 再学 Combine,FetchRequest 需要先点上 CoreData 技能点往后放放。AppStorage(SceneStorage)当修饰符看看就行。剩下的要好好理解下。一家之言,仅供参考。
Building
2021-05-25 18:29:33 +08:00
其实不需要一下子都学完,除非是必要的功能。
代码写多了你就会发现很多东西你自己就可以实现,然后你再去看这些关键字和用法,你会有恍然大悟的感觉。
agagega
2021-07-03 11:15:56 +08:00
这几个完全不一样的。

AppStorage 封装的是 UserDefaults,以键值对信息存储一些内容并提供默认值,典型用途是用户设置。

FetchRequest 是 Core Data 里面用的。

State 才更像 MVVM 框架里的 Data,表示和界面绑定的状态,更改后界面会自动更新。

ObservedObject 和 StateObject 这两个和 State 类似,适用于 class 而不是 struct/基本类型。这两种 Object 的区别在于生命周期,参考这篇文章: https://onevcat.com/2021/01/swiftui-state/

Binding 是把 State 传给字视图的一种方式,和直接传值的区别在于对 Binding 的修改会发送通知,从而更新父视图。

Environment 和 EnvironmentObject 是从根节点向所有的子视图传的东西,类型相对少,理解成全局单例吧。
agagega
2021-07-03 11:16:29 +08:00
@agagega
所以对简单的 view,最核心的就是 State 和 Binding,其他的更像是延伸。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/779095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX