@Published

The @Published property wrapper is another wrapper that allows us to rerender a view whenever a property changes that has an @Publisehd in front of it. It is important to note that this wrapper can only be applied to classes. If used within a Struct, it would result in an error message. Roughly speaking, one could say that @Published is for classes what @State is for Structs.

One example implementation could look like this:

As soon as the property gets new values and is published, the changes initially appear in the willSet block of the wrapper. This means that every subscriber gets an update before the property is changed.

We can use the @Published property wrapper with the ObservableObject protocol to tell our class that it is being watched because there might be SwiftUI Views that are watching our class so they can update their View whenever a @Published variable has changed.

@Published

Auch der Propertie Wrapper @Published ist ein Wrapper, der es uns erlaubt eine View zu rerendern, sobald sich eine Propertie verändert, die ein @Publisehd davorstehen hat. Wichtig hierbei ist, dass dieser Wrapper nur bei Klassen angewendet werden kann. Bei Anwendung innerhalb eines Structs würde es zu einer Fehlermeldung kommen. Grob gesagt kann man sagen @Published ist das für Klassen was @State für Structs ist.

Eine Beispiel Implementation könnte so aussehen:

Sobald die Propertie neue Werte bekommt und gepublished werden, tauchen die Veränderungen zunächst im willSet Block des wrappers auf. Dies bedeutet, dass jeder Subscriber ein Update bekommt, bevor die Propertie geändert wird.

Wir können den @Published Property Wrapper mit dem Protocol ObservableObject verwenden. Dies bedeutet, dass wir unserer Klasse sagen, das sie beobachtet wird, da es in SwiftUI Views geben könnte, die unsere Klasse beobachten, damit sie ihre View updaten können, sobald sich eine @Published variable verändert hat.