0

我有一个绑定到 NSCollectionView 的 NSArrayController。我的数据模型是一个 Person 类。Inside Person 是一个计时器,它将每秒更改属性年龄。在我的 NSCollectionViewItem 我有一个 NSLabel 绑定到代表Object.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)
    }
}
4

1 回答 1

3

绑定建立在键值观察之上。为了使 Swift 中的属性符合 KVO,必须将其标记为dynamic. 所以,声明age为:

dynamic public var age:Int
于 2015-06-25T21:24:27.753 回答