如何在数据模型更改时更新NSCollectionViewItem?

时间:2015-06-25 21:05:11

标签: xcode swift nsarraycontroller nscollectionview nscollectionviewitem

我有一个绑定到NSCollectionView的NSArrayController。我的数据模型是一个Person类。 Inside Person是一个定时器,它将每秒更改属性 age 。在我的NSCollectionViewItem中,我有一个绑定到 representObject.age 的NSLabel。

当应用程序启动时,标签将显示 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 个答案:

答案 0 :(得分:3)

绑定建立在Key-Value Observing之上。为了使Swift中的属性符合KVO标准,必须将其标记为dynamic。因此,请将age声明为:

dynamic public var age:Int