我正在将 JSON 数据转换为一个结构,然后将该结构添加到一个数组,但在执行此操作时我无法访问该结构中的值。
首先我有我的结构:
struct Skill {
var name: String
init(dictionary: [String: Any]){
name = dictionary["name"] as! String
}
}
然后在另一个类中,我将我的 JSON 数据转换为结构并将其添加到数组中。我可以访问 for 循环中的值(即 skillDict.name),但我无法从另一个类中的数组访问它们。
var skillArray: NSMutableArray = []
fun getJSON(){
….
if let skill : NSArray = jsonRoot["skills"] as? NSArray
{
for each in skill{
var skillDict = Skill(dictionary: each as! [String : Any])
skillArray.add(skillDict)
}
}
当我从另一个类运行下面的代码时,我在第一行打印时收到此错误:“此类的键名不符合键值编码”。我也尝试过使用 The second print line 正确打印我的所有对象,但我无法访问 name 值。
for each in skillArray{
print(skillArray.value(forKey: "name"))
print(each) //this line will print correctly, so I know the correct data is in the array
}
我还尝试在 for 循环内外使用以下代码:
print(skillArray.map { $0["name"] as? String })
但我收到编译器错误“Type Any 没有下标成员”
如何正确访问名称值?
最佳答案
你有两种方法来修复它,要么创建 [Skill]
类型的 skillArray
而不是 NSMutablearray
或转换 $0
在 map 函数中首先是 Skill
类型,然后使用底层属性。
例如,这可能会有所帮助:
print(skillArray.map { ($0 as! Skill).name })
关于ios - 如何快速从结构中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759002/