Как обновить NSCollectionViewItem при изменении модели данных?
У меня есть NSArrayController, связанный с NSCollectionView. Моя модель данных - это класс Person. Inside Person - это таймер, который меняет возраст объекта каждую секунду. В моем NSCollectionViewItem у меня есть NSLabel, связанный с presentObject.age.
При запуске приложения на ярлыке будет отображаться начальное значение возраста, но оно не будет обновляться после изменения значения. Как я могу это сделать?
import Foundation
@objc(Person)
public class Person: NSObject
{
public var firstName:String
public var lastName:String
public var age:Int
var timer:NSTimer?
override init()
{
self.firstName = "Max"
self.lastName = "Meier"
self.age = 33
super.init()
self.timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "tick", userInfo: nil, repeats: true)
self.timer?.fire()
}
public func tick()
{
self.age++
println(self.age)
}
}
1 ответ
Решение
Привязки строятся поверх наблюдения значения ключа. Для того чтобы недвижимость в Свифте соответствовала КВО, она должна быть помечена dynamic
, Итак, объявляем age
как:
dynamic public var age:Int