在NSViewController中,我有一个变量定义为@objc public styles:[String:[String:[Double]]] = [:]
。它连接到InterfaceBuilder中的两个NSDictionaryControllers。我可以在视图中添加,删除和编辑其内容。但是问题是当我尝试更改[Double]
数组中的值时。
另一个视图向我发送了一个通知对象,为(name:String, values:[Int:Double])
,其中name是第二级字典的变量的键,values是一个字典,其中key是要在[Double]
数组中更改的元素和值的索引–值为设置。
@objc func assign(_ notification:Notification) {
guard let change = notification.object as? (name:String, values:[Int:Double]) else {return}
for (axisName, styles) in styles {
if styles.keys.contains(change.name) {
for (index, value) in change.values {
print ("---------> change \(_styles[axis]?[change.name]), \(index)")
self.styles[axisName]?[change.name]?[index] = value
print ("---------> changed \(_styles[axis]?[change.name])")
}
}
}
print
语句告诉我值已正确设置。
---------> change Optional([0.0, 0.0]), 1
---------> changed Optional([0.0, 0.0005033827319587628])
---------> change Optional([0.0, 0.0005033827319587628]), 1
---------> changed Optional([0.0, 0.0005033827319587628])
---------> change Optional([0.0, 0.0005033827319587628]), 1
---------> changed Optional([0.0, 0.0020135309278350513])
....
但是,如果我更改选择并返回同一元素,则值保持不变,它们的初始值为0.0
。我尝试通过NSDictionaryController访问这些数组,但结果是相同的-没有更改。