如何获取引用属性以触发属性观察者?参考属性上的swift属性观察者
为了演示我的问题,我用一个按钮和一个标签编写了一个简单的MVC程序。该按钮增加模型中的计数器并在计算机视图控制器中的标签中显示计数器的值。
的问题是,计数器增量(在模型中)不触发didSet观察者(在视图控制器)
下面是该模型的文件:
import Foundation
class MvcModel {
var counter: Int
var message: String
init(counter: Int, message: String) {
self.counter = counter
self.message = message
}
}
// create instance
var model = MvcModel(counter: 0, message: "")
// counting
func incrementCounter() {
model.counter += 1
model.message = "Counter Value: \(model.counter)"
//print(model.message)
}
这里是视图控制器文件:
import Cocoa
class ViewController: NSViewController {
let model1 = model
var messageFromModel = model.message {
didSet {
updateDisplayCounterLabel()
}
}
// update Label
func updateDisplayCounterLabel() {
DisplayCounterLabel.stringValue = model1.message
}
// Label
@IBOutlet weak var DisplayCounterLabel: NSTextField! {
didSet {
DisplayCounterLabel.stringValue = "counter not started"
}
}
// Button
@IBAction func IncrementButton(_ sender: NSButton) {
incrementCounter()
print("IBAction: \(model1.message)")
}
}
我想这个问题是与参考性质(因为我已经能够使本工作方案与基于结构的模型)。
如果有人能告诉我如何处理属性观察者和引用属性,并使这种MVC工作,我打算在真正的程序中使用它,我将不胜感激。
请张贴解决方案,答案不是更新你的问题。这是为了帮助未来的访问者理解并避免混淆。 – Bugs