Проблема с Xcode?Словарь в объекте показывает все значения как ложные в инспекторе переменных, в то время как значения на самом деле истинны? - PullRequest
2 голосов
/ 22 апреля 2019
class ViewController: UIViewController {

    struct TestStruct: Decodable {
        var dict: [String: Bool]?
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let json = """
        {"dict":{
            "test": true
        }}
        """.data(using: .utf8)!

        let decoder = JSONDecoder()
        let product = try? decoder.decode(TestStruct.self, from: json)
        print(product)
    }
}

С этим фрагментом кода значение «test» словаря dict должно быть истинным.Если вы ставите точку останова на печать (продукт) (точка останова не печатается, но я сделал шаг на скриншоте) и посмотрите значения переменных в нижнем левом окне инспектора переменных,

enter image description here

dict [String: Bool]?1 пара ключ / значение some [0] (ключ: String, значение: Bool)
key String "test"
значение Bool false

значение установлено в false.

Однако, когда мы используем po для доступа к значению, кажется, что значение правильно установлено в true:

 Optional<TestStruct>
  ▿ some : TestStruct
    ▿ dict : Optional<Dictionary<String, Bool>>
      ▿ some : 1 element
        ▿ 0 : 2 elements
          - key : "test"
          - value : true

Нам было интересно, что здесь происходит?Почему продукт po возвращает правильное значение для содержащего словарь, а инспектор переменных GUI говорит, что для него установлено значение false.

Мы используем Xcode 10.1 для тестового проекта.

...