Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中读取嵌套数组的语法是否正确?_Ios_Arrays_Swift_Nested - Fatal编程技术网

Ios 在Swift中读取嵌套数组的语法是否正确?

Ios 在Swift中读取嵌套数组的语法是否正确?,ios,arrays,swift,nested,Ios,Arrays,Swift,Nested,本质上,我试图从数组->字典->数组->整数中获取整数。我所拥有的不会产生控制台错误,编译良好,但总是返回0。我认为我的语法是错误的,但我不确定重写它的正确方法 convenience init(fromDict dict: [String: Any]) { let dfa = dict["forms"] as? Array<Dictionary<String,Array<Any>>> self.init( heart: dfa

本质上,我试图从数组->字典->数组->整数中获取整数。我所拥有的不会产生控制台错误,编译良好,但总是返回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
    )
}
便利初始化(fromDict dict:[字符串:任意]){ 设dfa=dict[“forms”]为数组 self.init( 心脏:dfa?[0][“能力”]?[0]作为?智力??0 ) }

形式
能力
65

您的语法在我看来还行,不过我建议让内部数组包含
Int
而不是
Any
,如果它总是包含Int的话。这样,您可能会将最后一次强制转换丢失为Int类型

如果任何一个条件转换失败,那么将得到nil,nil合并操作符将把nil转换为0。我建议编写调试代码,记录传递到init方法中的对象,然后一次转换一个对象并逐步查看失败的地方


(正如Matt在评论中所说,如果第一个条件转换失败,您的
dfa
变量将为零。)

首先要做的是查看
dfa
本身是否为
nil
。是吗?当我删除
s时,dfa给了我断点错误。不应该,因为我可以在数据源中看到变量。您可以看到变量,但它可能没有
[“forms”]
条目,如果有,该条目的值可能不是
数组。你看到了吗?不过,您没有向我们展示dict的组成部分。你对一切都保密,所以没人能帮你。这就是为什么我要给你们指示,让你们自己思考这个问题。是的,我使用了
让dfs=dict[“forms”]as?数组
[“forms”]
中的字典中获取值。
[“forms”]
中有一个数组,我似乎无法从中提取此数据。如果该数组应该是plist或任何类型的xml,则它的格式完全不正确。强制展开它会给我EXC断点。但是,当变量位于指定位置时,为什么会变为nil呢?
因为?
是一个条件转换,返回一个包含正确类型的opional,如果转换失败,则变为nil。听起来,对象图中的某些内容与您期望的类型不匹配,因此强制转换失败。(不要强制展开。)如果有帮助,则使用plist源更新文章。我找不到这个问题的根源