ios - 在 Swift 中读取嵌套数组的正确语法?

标签 ios arrays swift nested

本质上,我试图从数组 -> 字典 -> 数组 -> 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/

相关文章:

ios - SpriteKit位置困惑

ios - Xamarin "The executable was signed with invalid entitlements"

objective-c - 当设置为 'initial view controller' 与使用presentModalViewController 加载时, View Controller 的行为有所不同

android - 如何访问 JSON 对象中的嵌套数组 (Android)

javascript - Jquery - 使用 HTML :selected to fetch an array with the same name

ios - 如何在 iPhone 4/4S 屏幕的指定部分设置摄像头?

ios - 在继续之前等待完成处理程序完成

ios - 如何在 iOS 中通过触摸来回移动对象

php - Php 中只显示我的整数值的第一位

swift - 子类化通用类