【问题标题】:Get all keys exists in NSDictionary and put into Array获取 NSDictionary 中存在的所有键并放入 Array
【发布时间】:2020-12-07 01:55:15
【问题描述】:

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

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

【问题讨论】:

  • 让 allKeys = abc.keys
  • "寻求调试帮助的问题('为什么这段代码不工作?')必须包括期望的行为、特定问题或错误必要的最短代码 在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:@ 987654322@"
  • 递归函数是解决此类问题的好方法。

标签: ios swift firebase firebase-realtime-database nsdictionary


【解决方案1】:

正如@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] 格式。

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2011-06-29
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    相关资源
    最近更新 更多