Arkadii Ivanov
Value
@propertyWrapper struct StateValue<T : AnyObject>: DynamicProperty { @ObservedObject private var obj: ObservableValue<T> var wrappedValue: T { obj.value } init(_ value: Value<T>) { obj = ObservableValue(value) } }
struct CounterView: View { let counter: CounterComponent private var observableModel: ObservableValue<CounterComponentModel> private var model: CounterComponentModel { observableModel.value } init(_ counter: CounterComponent) { self.counter = counter observableModel = ObservableValue(counter.model) } var body: some View { ... } }
struct CounterView: View { let counter: CounterComponent @StateValue private var model: CounterComponentModel init(_ counter: CounterComponent) { self.counter = counter _model = StateValue(counter.model) } var body: some View { ... } }
Adam Brown
A modern programming language that makes developers happier.