2017-08-01 17 views
-1

私は辞書の辞書としてバックfirebaseデータを取得しています:データ辞書を配列Swiftに変換するにはどうすればよいですか?

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"と "cafe-myriade"を配列に入れようとしています。私はマップ関数を使用するように言われているが、私はどのようにわからない。それはこのようなものでしょうか?

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

私は基本的にすべてのことがカフェ名であるようにキーを取得しようとしています。ありがとう!ここで

+2

辞書のキーの配列の後にいる場合は、 'Array(a.keys)'のような 'keys'プロパティを使います。最初のものを取得するには、 'Array(a.keys).first' – paulvs

+1

[配列の辞書をswiftで使用する]の可能な複製(https://stackoverflow.com/questions/26386093/array-from-dictionary-keys-迅速に) – Kymer

答えて

0

マップの使用について、私はthis pageが有用で視覚的であると思います。

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

は、あなたがそれを達成する方法の例です:

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"] 
0

を、あなたはこのような何かを行うことができます:

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"] 
関連する問題