ios - 遍历字典数组以获取所有键

标签 ios swift

我在 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/

相关文章:

ios - 使用 ADB 在设备上运行 React Native (iOS)

ios - 将值从 Objective-C 传递到 JS 文件

ios - 如何在 iOS 应用程序中维护 session ?

ios - UICollectionView 滚动 SWIFT 滞后/缓慢

swift - 代码如果数字大于x,则y = amount

swift - 当消息大小较大时,appendMessageOperation 失败?

ios - 用于生成锁文件的 CocoaPods 版本(1.5.3)高于当前可执行文件的版本(1.5.2)

ios - UITableViewCell 中按钮的角不圆角

swift - 当应用程序处于后台或终止状态时,如何找到用户位置?

ios - 在 XCode : specified item could not be found in the keychain 中签署应用程序