如何獲取引用屬性以觸發屬性觀察者?參考屬性上的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