SwiftUIs @ObservedObject requires that the observed object actually exists. In some cases
it’s convenient to observe an object which might be nil. In this case, @ObservedOptionalObject can be used.
struct SomeView: View {
// Instead of
@ObservedObject var anObject: Model? // Won't work
// use
@ObservedOptionalObject var anObject: Model?
var body: some View {
HStack {
Text("Name")
if let name = anObject?.name {
Text(name)
}
}
}
}
Please note, that @ObservedOptionalObject is only useful if your contains content that should
be displayed, even when the object is nil. Otherwise the view should be contained within an if let statement:
if let obj = obj { SomeView(anObject: obj) }
ObservedOptionalObject
Rationale
SwiftUI
s@ObservedObject
requires that the observed object actually exists. In some cases it’s convenient to observe an object which might be nil. In this case,@ObservedOptionalObject
can be used.Please note, that
@ObservedOptionalObject
is only useful if your contains content that should be displayed, even when the object isnil
. Otherwise the view should be contained within anif let
statement:if let obj = obj { SomeView(anObject: obj) }
Installation
This package is available via SwiftPM
License
This project is licensed under the MIT License.