1 模型数据

原文链接: https://developer.apple.com/documentation/swiftui/model-data

1 模型数据

管理驱动应用界面的数据。

概述

SwiftUI 提供了一种声明式的用户界面设计方式。当你组合视图层级时,也同时指明了各个视图的数据依赖。当数据发生变化时——无论是外部事件引起的,还是用户执行某个操作引起的——SwiftUI 都会自动更新界面中受影响的部分。因此,框架会自动完成视图控制器传统上所做的大部分工作。

框架提供了状态变量和绑定等工具,用来把应用的数据连接到用户界面。这些工具有助于你为应用中的每一份数据维护单一数据源,部分原因在于它们减少了你需要编写的胶水逻辑。请选择最适合你手头任务的工具:

  • 通过把值类型包装为 State() 属性,在视图内部本地管理临时的界面状态。
  • 用 Binding 属性包装器共享对某个数据源(例如本地状态)的引用。
  • 把 Observable() 宏应用到模型数据类型上,从而在视图中连接并观察引用类型的模型数据。用 State() 属性在视图中直接实例化可观察的模型数据类型。用 Environment 属性包装器把可观察的模型数据共享给层级中的其他视图,而无需传递引用。

创建与共享视图状态

  • 管理用户界面状态 —— 把视图特有的数据封装在应用的视图层级内,让你的视图可复用。
  • State() —— 创建一个可以读写由 SwiftUI 管理的值的属性。
  • State(initialValue:) —— 创建一个带初始值、可以读写由 SwiftUI 管理的值的属性。
  • State(wrappedValue:) —— 创建一个带被包装值、可以读写由 SwiftUI 管理的值的属性。
  • State —— 可以读写由 SwiftUI 管理的值的属性包装器类型。
  • Bindable —— 支持为可观察对象的可变属性创建绑定的属性包装器类型。
  • Binding —— 可以读写由某个数据源拥有的值的属性包装器类型。

创建模型数据

响应数据变化

在整个应用中分发模型数据

管理动态数据

  • DynamicProperty —— 用于更新视图外部属性的存储变量的接口。