iOS Swift 访问数组中的字符串

标签: ios Swift
发布时间: 2017/3/6 23:12:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我设置数组如下所示︰

let modelArray = [
    "Casual":   ["health": 17, "weapon": 8, "crafting": 15, "social": 30],
    "Soldier":  ["health": 25, "weapon": 32, "crafting": 8, "social": 5],
    "Doctor":   ["health": 35, "weapon": 5, "crafting": 15, "social": 15],
    "Dorothy":  ["health": 15, "weapon": 15, "crafting": 20, "social": 20],
    "Asian":    ["health": 13, "weapon": 5, "crafting": 7, "social": 45],
    "Police":   ["health": 23, "weapon": 22, "crafting": 5, "social": 20]
]

当循环时,如何访问字符串(例如"休闲") 值?

for (index, model) in character.modelArray.enumerate()
{
    print("\(index) carries: \(model[0]")
}

这给了我类型字符串 (字典)' 有没有下标的成员

解决方法 1:

正如乔希指出,你 modelArray 对象是字典之一。( let modelArray : [String: [String:Int]] 是完整的类型信息)。

不能使用带内的词典的下标 Int ,只有 String

这里是代码的您,会得到一些健康统计每个字符的版本︰

for statDictionary in characters.modelArray {
    let health = statDictionary["health"]
    print(health)
}

进一步建议

像这样在一本字典的存储数据很好为了某些目的,但你可能会找到一个更清洁,更安全 API 可通过创建结构 (或类) 举行此状态信息。

struct CharacterStats {
     let health : Int
     let weaponNumber : Int
    // etc.
}

然后枚举更简单,并可要求没有松散的字符串键 (这可能被打错)。

 for stat in characters {
     let health = stat.health
}
官方微信
官方QQ群
31647020