首页 > 解决方案 > 获取 NSDictionary 中存在的所有键并放入 Array

问题描述

在此处输入图像描述

当我从子“abc”快照时,我得到了这个 NSDictionary,“3c”可以添加更多嵌套的子。如何获取 NSDictionary 中的所有键并放入 Array 预期结果:["abc","1a","2b","3c"]

value.allkeys 只是采用相同的层次结构键

标签: iosswiftfirebasefirebase-realtime-databasensdictionary

解决方案


正如@AechoLiu 所写,递归方法是一种很好的方法。如下所示:

func nestedKeys(in dictionary: [String: Any]) -> [String] {
    guard let dictionaryValues = dictionary.values.filter({ $0 is [String: Any] }) as? [[String: Any]] else {
        return [String]() + dictionary.keys
    }
    let subKeys = dictionaryValues.reduce([String]()) { result, dictionary in
        return result + nestedKeys(in: dictionary)
    }
    return dictionary.keys + subKeys
}

以上期望您的字典[String: Any]显然是格式。


推荐阅读