【发布时间】:2020-03-06 09:19:57
【问题描述】:
我考虑有什么区别
@Published var isLoggedIn: Bool = false
var isLoggedIn: AnyPublisher<Bool, Never>
我知道在第一次的情况下,我可以直接在 SwiftUI 视图中使用它,即使用 $ 符号创建绑定,然后例如使用 if $isLoggedIn.animation()
但是我怎样才能用AnyPublisher<Bool, Never> 达到同样的效果,看来我需要在某个地方调用 assign 或 sink 和 store()。让它发挥作用。所以在 SwiftUI 中创建绑定似乎是不可能的,就像if $isLoggedIn.animation
@Published 的限制是我不能在那里进行自定义观察。例如,我可以通过 UserDefaults.publisher 中的 AnyPublisher 执行 UserDefaults。
现在看来我需要两者兼而有之并让AnyPublisher更新@Published var
但我认为@Published 是位于常规 AnyPublisher 下的属性包装器,那么为什么我不能直接从 AnyPublisher 在 SwiftUI 视图中进行绑定?
【问题讨论】:
-
"...@Published 是我不能在那里进行自定义观察。"为什么不?它像任何其他主题一样具有发布者,您可以使用运算符、接收器……任何您需要的东西。