我在 User
对象中有一组名为 rooms
的字典 [[String : AnyObject]]
- 每个字典都有一个名称String 和一个 id 作为 AnyObject。
我想用名称填充 TableView ,所以我尝试遍历数组并从字典中获取字符串值。
if let roomDict = myUser.rooms as? [[String : AnyObject]] {
for (roomNames, _) in roomDict {
cell.textLabel?.text = roomNames
}
}
我是个新手,从我在教程中看到的情况来看,当循环遍历字典时,您可以使用下划线来指定您不需要第二个值。因此,只需获取所有第一个值(在本例中为名称),并将它们设置为 roomNames
变量。
但是我在这里很困惑,因为我不是在循环字典,而是在字典数组中循环。所以我不确定该怎么做。我进行了搜索,我看到的结果通常是询问有关 JSON 的信息,但这里不是这种情况。我该怎么做?
感谢您的帮助!
最佳答案
首先,您的字典结构不理想。与其将键作为房间名称,将值作为标识符,您的字典应该具有已知的键名和变量值。键不应该是字典中的“数据”。
所以,而不是
["room1":1]
如果是的话就更好了
["roomName":"room1", "roomID":1]
然而,对于您当前的结构,假设每个字典只有一个键,即房间名称,您可以通过以下方式获取名称:
if let rooms = myUser.rooms as? [[String : AnyObject]] {
roomNames = rooms.map({ $0.keys.first!})
}
如果你使用我建议的更好的结构,那就是
if let rooms = myUser.rooms as? [[String : AnyObject]] {
roomNames = rooms.map({ $0["roomName"] as? String ?? ""})
}
关于ios - 遍历字典数组以获取所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43219045/