Ios 在Swift中读取嵌套数组的语法是否正确?
本质上,我试图从数组->字典->数组->整数中获取整数。我所拥有的不会产生控制台错误,编译良好,但总是返回0。我认为我的语法是错误的,但我不确定重写它的正确方法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
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源更新文章。我找不到这个问题的根源