【发布时间】:2019-12-22 08:19:00
【问题描述】:
当按照当前的 SwiftUI 语法使用 @Published 属性包装器时,似乎很难定义一个包含 @Published 属性的协议,或者我肯定需要帮助 :)
当我在 View 和它的 ViewModel 之间实现依赖注入时,我需要定义一个 ViewModelProtocol 以便注入模拟数据以轻松预览。
这是我第一次尝试,
protocol PersonViewModelProtocol {
@Published var person: Person
}
我得到“在协议中声明的属性‘人’不能有包装器”。
然后我尝试了这个,
protocol PersonViewModelProtocol {
var $person: Published
}
显然没有用,因为 '$' 是保留的。
我希望有一种方法可以在 View 和它的 ViewModel 之间放置一个协议,并利用优雅的 @Published 语法。非常感谢。
【问题讨论】:
-
我真的希望这成为可能,因为我有同样的问题。我最终将
CurrentValueSubject用于我的属性,而不是@Published,因为它可以愉快地在协议中使用。