本质上,我试图从数组 -> 字典 -> 数组 -> Int 中获取整数。我所得到的不会产生控制台错误并且编译正常,但总是返回 0。我认为我的语法是错误的,但我不确定重写它的正确方法。
convenience init(fromDict dict: [String: Any]) {
let dfa = dict["forms"] as? Array<Dictionary<String,Array<Any>>>
self.init(
heart: dfa?[0]["abilities"]?[0] as? Int ?? 0
)
}
<array>
<dict>
<key>forms</key>
<array>
<dict>
<key>abilities</key>
</array>
<integer>65</integer>
</array>
最佳答案
你的语法对我来说看起来不错,尽管我建议让内部数组包含Int
而不是Any
(如果它总是包含整数)。这样你就可以失去对 Int 类型的最终转换。
如果您的任何一个条件转换失败,那么您将得到 nil,并且 nil 合并运算符会将您的 nil 转换为 0。我建议编写调试代码来记录传递到 init 方法中的对象,然后转换一件事一次并逐步查看失败的地方。
(正如 Matt 在评论中所说,如果第一个条件转换失败,您的 dfa 变量将为 nil。)
关于ios - 在 Swift 中读取嵌套数组的正确语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41411855/