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”值应为true。如果您在print(product)上设置了一个断点(断点不在打印中,但是我在屏幕截图中进行了过渡),然后在左下方的变量检查器中查看变量值,
dict [String:Bool]? 1个键/值对一些
[0](键:字符串,值:布尔)
键字符串“测试”
布尔值false
该值设置为false。
但是,当我们使用po来访问该值时,该值似乎已正确设置为true:
Optional<TestStruct>
▿ some : TestStruct
▿ dict : Optional<Dictionary<String, Bool>>
▿ some : 1 element
▿ 0 : 2 elements
- key : "test"
- value : true
我们想知道这里发生了什么?为什么po product会因为包含字典而返回良好的值,而GUI变量检查器却将其设置为false。
我们将Xcode 10.1用于测试项目。