【发布时间】:2023-03-12 14:32:02
【问题描述】:
我正在尝试从嵌套字典中获取一个 int。我的代码如下
convenience init(fromDict dict: [String:Any]) {
let dfs = dict["forms"] as? [[String :[String:Any]]]
self.init(
atk: dfs?[0]["stats"]?["atk"] as? Int ?? 0,
def: dfs?[0]["stats"]?["def"] as? Int ?? 0,
)
}
但是,结果一直为 0。我确定这是正确的文件路径,为什么它没有显示正确的整数?下面是我从中获取的 plist 路径。非常感谢您对此事的任何帮助。
<array>
<dict>
<key>forms</key>
<array>
<dict>
<key>stats</key>
<dict>
<key>atk</key>
<integer>49</integer>
<key>def</key>
<integer>49</integer>
</dict>
</dict>
</array>
</dict>
<array/>
【问题讨论】:
-
使用调试器查看
dfs和dfs[0]和dfs[0]["stats"]等的值 -
你也可以在你的初始化中添加一个
print(dict)。它应该打印["forms": [["stats": ["def": 49, "atk": 49]]]]。 -
"forms": <__nscfarray>( { stats = { atk = 49; def = 49; };
-
似乎您隐藏了数组中包含的其他一些元素,这可能是您的代码不起作用的原因。使用
print(dict)展示您获得的所有内容。 -
文件其实很大,所以我只包含了相关部分。我正在尝试调试,我可以看到它可以读取 atk 和 def 但无法验证密钥
标签: ios arrays swift dictionary int