前提・実現したいこと
地図を利用したアプリ開発を行っております。
すでにDatabase上にサンプルユーザーを作成しており、
getDocumentsで取得したユーザーの値を、
mapを使用して用意した配列に代入したいと考えております。
その配列からAnnotationを立てようと考えております。
発生している問題・エラーメッセージ
foreach文を使用して、Annotationを作成するところはできたと思いますが、
getDocumentsで取得して、querySnapShotに入っているデータをmapを使用して
配列に代入するところが分かりません。
Swift
1func getInformation() { 2 //print("getUserInformationスタート") 3 4 let artistDB = db.document("version/1") 5 artistDB.collection("useraccount").whereField("City", isEqualTo: userCity) 6 .getDocuments { (querySnapshot, error) in 7 if let error = error { 8 print("Error getting documents: (error)") 9 return 10 } 11 if let querySnapshot = querySnapshot { 12 let userAccounts: [UserAccount] = querySnapshot.documents.map { 13 //ここが分かりません 14} 15 userAccounts.forEach { 16 let userAnnotation = MKPointAnnotation() 17 userAnnotation.title = $0.city 18 userAnnotation.subtitle = $0.name 19 userAnnotation.coordinate = CLLocationCoordinate2D(latitude: $0.latitude, longitude: $0.longtitude) 20 self.mapView.addAnnotation(userAnnotation) 21 } 22 } 23 } 24 }
UserAccount
1struct UserAccount: Codable, Modelable, Equatable { 2 //ユーザー情報 3 var id: String? 4 var name: String? 5 //位置情報 6 var latitude: Double = 0.0 7 var longtitude: Double = 0.0 8 9 //都市の情報 10 var name: String = "" 11 var city: String = "" 12}
試したこと
map{}内に、配列全要素に加える処理を書かないといけないことは分かりましたが、
どうやったらいいのかが分かりませんでした。
よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
Xcode 5
Firebase
Ballcap
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。