【发布时间】:2017-07-22 15:48:06
【问题描述】:
我有一个绑定到 NSArrayController 的 tableview。 ArrayController 从数组[NSObject] 中获取数据:
class Fruits : NSObject {
var name:String
var price:Double
// If I set 'isBold = true' here manually,
//the font in my tableview becomes bold (from start of the application).
dynamic var isBold = false {
didSet {
print(isBold)
}
}
override init() {
name = "name"
price = 0.0
}
init(name:String, price:Double) {
self.name = name
self.price = price
}
}
所以只要我手动设置 ìsBold` 值,一切都会正常工作。
如果我调用 ViewController:
Fuits.init().isBold = true
tableView.reloadData()
打印了正确的ìsBold`值,但在tableview中没有任何变化。任何想法为什么 ArrayController 没有注意到更新的值?
编辑:
我找到了一种工作方式。但也许只是提示为什么它不像上面那样工作。此解决方案适用于迭代,我不认为它应该是这样的。
func changeBold(bold: Bool) {
if bold == false {
self.dataArray.forEach { fruit in
fruit.isBold = false
} else {
self.dataArray.forEach { fruit in
fruit.isBold = true
}
}
}
【问题讨论】:
标签: arrays swift cocoa binding nsarraycontroller