import UIKit
import Combine
class ViewController: UIViewController {
@IBOutlet weak var allowMessageSwitch: UISwitch!
@IBOutlet weak var sendButton: UIButton!
@IBOutlet weak var messageLabel: UILabel!
@Published var canSendMessages: Bool = false
@Published var newMsg: String = ""
private var switchSubscriber: AnyCancellable?
private var btnSubscriber: AnyCancellable?
override func viewDidLoad() {
allowMessageSwitch.isOn = false
super.viewDidLoad()
setupProcesscingChain()
}
func setupProcesscingChain() {
switchSubscriber = $canSendMessages.receive(on: DispatchQueue.main).assign(to: \.isEnabled, on: sendButton)
btnSubscriber = $newMsg.receive(on: DispatchQueue.main).assign(to: \.text, on: messageLabel)
}
@IBAction func didSwitch (_ sender: UISwitch) {
canSendMessages = sender.isOn
}
@IBAction func sendMessage( _ sender: Any) {
}
}
Я получаю ошибку в
btnSubscriber = $newMsg.receive(on: DispatchQueue.main).assign(to: \.text, on: messageLabel)
сообщение об ошибке
Тип выражения неоднозначен без дополнительного контекста
Я не понимаю, почему ярлык не работает как Switcher (булево)
Я предполагаю, что это потому, что \.isEnabled
не является обязательным, а \.text
не является обязательным .. ??
как я могу заставить это работать с тем же форматом. это для практики и для понимания того, как работает Combine .. пожалуйста, помогите!