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 должно быть истинным.Если вы ставите точку останова на печать (продукт) (точка останова не печатается, но я сделал шаг на скриншоте) и посмотрите значения переменных в нижнем левом окне инспектора переменных,
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 для тестового проекта.