swiftui xcode11

swiftui - No cumple con el protocolo BindableObject-Xcode 11 Beta 4



xcode11 (2)

Jugando con ejemplos por ahí. Encontró un proyecto que tenía una clase que era un objeto enlazable, no dio ningún error. Ahora que Xcode 11 beta 4 está fuera, me aparece el error:

El tipo ''UserSettings'' no cumple con el protocolo ''BindableObject''

Tiene un botón de corrección en el error, al hacer clic en eso, agrega

typealias PublisherType = <#type#>

Se espera que rellene el tipo.

¿Cuál sería el tipo?

class UserSettings: BindableObject { let didChange = PassthroughSubject<Void, Never>() var score: Int = 0 { didSet { didChange.send() } } }


¿Por qué el envío de notificaciones antes de cambiar el valor funciona? Estoy confundido. Con didChange todo fue lógico y claro para mí.


Las notas de la versión Beta 4 dicen:

El requisito del protocolo BindableObject ahora es willChange en lugar de didChange, y ahora debe enviarse antes de que el objeto cambie en lugar de después de que cambie. Este cambio permite mejorar la coalescencia de las notificaciones de cambio. (51580731)

Necesitas cambiar tu código para:

class UserSettings: BindableObject { let willChange = PassthroughSubject<Void, Never>() var score: Int = 0 { willSet { willChange.send() } } }