我有一个在对象中[[String : AnyObject]]调用的字典数组- 每个字典都保存一个作为 String 的名称和一个作为 AnyObject 的 id。roomsUser
我想用名称填充表视图,因此我尝试循环数组并从字典中获取字符串值。
if let roomDict = myUser.rooms as? [[String : AnyObject]] {
for (roomNames, _) in roomDict {
cell.textLabel?.text = roomNames
}
}
Run Code Online (Sandbox Code Playgroud)
我相对较新,从我在教程中看到的内容以及循环字典时的情况来看,您使用下划线来指定您不需要第二个值。因此,只需获取所有第一个值(在本例中为名称),并将它们设置为roomNames变量即可。
然而我在这里很困惑,因为我不是循环字典,而是循环字典数组。所以我不知道该怎么做。我进行了搜索,看到的结果通常都是关于 JSON 的,但这里的情况并非如此。我怎样才能做到这一点?
谢谢你的帮助!
首先,你的字典结构不理想。您的字典不应将键作为房间名称,将值作为标识符,而应具有已知的键名称和变量值。键不应该是字典中的“数据”。
所以,而不是
["room1":1]
Run Code Online (Sandbox Code Playgroud)
如果是的话就更好了
["roomName":"room1", "roomID":1]
Run Code Online (Sandbox Code Playgroud)
但是,根据您当前的结构,假设每个字典只有一个键,即房间名称,您可以通过以下方式获取名称:
if let rooms = myUser.rooms as? [[String : AnyObject]] {
roomNames = rooms.map({ $0.keys.first!})
}
Run Code Online (Sandbox Code Playgroud)
如果您使用我建议的更好的结构,那么它将是
if let rooms = myUser.rooms as? [[String : AnyObject]] {
roomNames = rooms.map({ $0["roomName"] as? String ?? ""})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3681 次 |
| 最近记录: |