Значения в словаре не обновляются в NSDictionaryController - PullRequest
0 голосов
/ 30 декабря 2018

В NSViewController у меня есть переменная, определенная как @objc public styles:[String:[String:[Double]]] = [:].Это связано с двумя NSDictionaryControllers в InterfaceBuilder.Я могу добавлять, удалять редактировать его содержимое в представлении.Но проблема в том, когда я пытаюсь изменить значения в массивах [Double].Другое представление отправляет мне объект уведомления как (name:String, values:[Int:Double]), где name - это ключ переменной словаря второго уровня, values ​​- это словарь, где key - это индекс элемента, подлежащего изменению в массиве [Double], а value - новое значение для установки.

    @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, но результат был тот же - без изменений.

...