数据模型更改时如何更新 NSCollectionViewItem?
How to update NSCollectionViewItem when data model change?
我有一个绑定到 NSCollectionView 的 NSArrayController。我的数据模型是 class 人。 Inside Person 是一个计时器,每秒会更改 属性 age。在我的 NSCollectionViewItem 中,我有一个绑定到 representedObject.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)
}
}
绑定建立在键值观察之上。为了使 Swift 中的 属性 符合 KVO,必须将其标记为 dynamic
。因此,将 age
声明为:
dynamic public var age:Int
我有一个绑定到 NSCollectionView 的 NSArrayController。我的数据模型是 class 人。 Inside Person 是一个计时器,每秒会更改 属性 age。在我的 NSCollectionViewItem 中,我有一个绑定到 representedObject.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)
}
}
绑定建立在键值观察之上。为了使 Swift 中的 属性 符合 KVO,必须将其标记为 dynamic
。因此,将 age
声明为:
dynamic public var age:Int