字典中的值在NSDictionaryController中不会更新

时间:2018-12-30 14:49:06

标签: swift cocoa appkit

在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访问这些数组,但结果是相同的-没有更改。

0 个答案:

没有答案