@Published
是 SwiftUI 框架中的一个属性包装器(Property Wrapper),用于将一个属性标记为可观察的。当这个属性的值发生变化时,它会通知所有订阅了这个属性的观察者。这在构建响应式用户界面时非常有用,因为它允许视图自动更新以反映数据的变化。
@Published
属性的值发生变化时,所有依赖于该属性的视图都会自动更新。@Published
,可以减少手动管理观察者和通知的代码量。@Published
使得数据模型和视图之间的耦合度降低,便于维护和扩展。@Published
可以用于任何遵循 ObservableObject
协议的类中的属性。它通常与 @ObservedObject
或 @StateObject
结合使用。
@Published
值?当你需要检查多个 @Published
值时,可以通过以下几种方法来实现:
class MyViewModel: ObservableObject {
@Published var value1 = 0
@Published var value2 = ""
func checkValues() {
print("value1: \(value1), value2: \(value2)")
}
}
@Published
属性的变化。import Combine
class MyViewModel: ObservableObject {
@Published var value1 = 0
@Published var value2 = ""
private var cancellables = Set<AnyCancellable>()
init() {
$value1
.combineLatest($value2)
.sink { [weak self] (newValue1, newValue2) in
self?.checkValues(newValue1: newValue1, newValue2: newValue2)
}
.store(in: &cancellables)
}
func checkValues(newValue1: Int, newValue2: String) {
print("value1: \(newValue1), value2: \(newValue2)")
}
}
@Published
属性的变化。class MyViewModel: ObservableObject {
@Published var value1 = 0
@Published var value2 = ""
init() {
NotificationCenter.default.addObserver(self, selector: #selector(valuesChanged), name: .valuesChanged, object: nil)
}
@objc func valuesChanged() {
checkValues()
}
func checkValues() {
print("value1: \(value1), value2: \(value2)")
}
deinit {
NotificationCenter.default.removeObserver(self)
}
}
extension Notification.Name {
static let valuesChanged = Notification.Name("valuesChanged")
}
通过以上方法,你可以有效地检查和管理多个 @Published
值的变化。
领取专属 10元无门槛券
手把手带您无忧上云