代码之家  ›  专栏  ›  技术社区  ›  Sam

如何将数据字典转换为数组Swift?

  •  1
  • Sam  · 技术社区  · 9 年前

    我正在将firebase数据检索回字典:

     guard let data = snapshot.value as? [String: [String:Int]] else {
    

    我试图检索第一个键(?)如果结果是这样的:

     "café-veritas": ["AmpleSeating": 1, "Organic": 1, "Quiet": 1, "AmpleOutletAccess": 1, "Couch": 1, "Loud": 1, "GlutenFree": 1, "FreeWifi": 1], 
     "cafe-myriade": ["Terasse": 1, "LaptopFriendly": 1, "Quiet": 1, "FreeWifi": 1, "FastWifi  ": 1, "GlutenFree": 1],
    

    我试着把咖啡馆的名字,“caf veritas”和“caf myriade”放入一个数组中。我被告知要使用映射功能,但我不知道如何使用。是这样吗?

     let array = data.map { yelp IDs in yelpIDs}
    

    3 回复  |  直到 9 年前
        1
  •  5
  •   Durdu    9 年前

    关于使用地图,我想 this page

    let names = data.map { return $0.key }
    print(names)    // prints ["café-veritas", "cafe-myriade"]
    
        2
  •  0
  •   fiks    9 年前

    下面是一个如何实现的示例:

    var data : [String: [String:Int]]
    
    data = ["first": ["value1": 1], "second": ["value2": 1]]
    
    var array = data.map { $0.value }
    var arr = array.flatMap { $0.keys.first }
    
    print(arr)
    

    将打印:

    ["value2", "value1"]
    
        3
  •  0
  •   RyanP    9 年前

    let dictionaries = [["café-veritas": ["AmpleSeating": 1, "Organic": 1, "Quiet": 1, "AmpleOutletAccess": 1, "Couch": 1, "Loud": 1, "GlutenFree": 1, "FreeWifi": 1],"cafe-myriade": ["Terasse": 1, "LaptopFriendly": 1, "Quiet": 1, "FreeWifi": 1, "FastWifi  ": 1, "GlutenFree": 1]]]
    
    let result = dictionaries.flatMap({ $0.keys.map({ $0 }) })
    
    // returns ["café-veritas", "cafe-myriade"]