当使用 Xcode 项目时
当使用 Swift Package Manager 清单时
选择一个包版本
2.0.0
main
一个用于 SwiftUI ObservableObject 的新属性包装器。
@SharedObject
是 @StateObject
、@ObservedObject
、@EnvironmentObject
的替代方案,用于处理 ObservableObject
。 如果你需要让同一个类的多个对象在多个视图实例之间持久化,其他包装器很难处理这种情况:使用 @StateObject
,对象会随着视图一起销毁,并且只为特定的视图实例生成;使用 @EnvironmentObject
,你只能为每个 Environment 绑定同一个类的一个实例;使用 @ObservedObject
,很难在嵌套视图中传播对象。
@SharedObject
简单地使用标识符存储对象,因此你可以随时检索它。
使用给定的 ID 检索共享对象,如果不存在,则使用初始值创建共享对象
@SharedObject("A") var letterA = Letter()
如果你确定该对象已经创建,你可以直接检索共享对象
@SharedObject("A") var letterA: Letter
你可以为该类提供一个默认的初始值,这样你就不需要在你认为会创建该对象的每个视图中都指定它
final class Letter: SharableObject {
var value: String
init(_ value: String) {
self.value = value
}
static var initialValue: Self {
.init("A")
}
}
- 在 Xcode 中,打开你的项目并导航到 File → Swift Packages → Add Package Dependency...
- 粘贴仓库 URL (
https://github.com/lorenzofiamingo/swiftui-shared-object
) 并单击 Next。 - 单击 Finish。