2017-11-11 17 views
-2

マイコードが特定の場所の近くの場所を取得します。私は近くのすべての場所の座標を得ることができたとJSONは次のようになります。JSON結果を[CLLocation]に保存SWIFT

UPDATED JSON

これは、JSONの構造は、私は保存することができますどのように

{ 
    "results" : [ 
    { 
     "id" : "6a70e8bec1fd7429c3107bb53ff0663b68750b7d", 
     "rating" : 4.2999999999999998, 
     "vicinity" : "6169 طريق الأمير تركي بن عبدالعزيز الأول، الرياض", 
     "scope" : "GOOGLE", 
     "geometry" : { 
     "viewport" : { 
      "northeast" : { 
      "lat" : 24.725911030291499, 
      "lng" : 46.646357630291497 
      }, 
      "southwest" : { 
      "lat" : 24.723213069708489, 
      "lng" : 46.643659669708498 
      } 
     }, 
     "location" : { 
      "lat" : 24.7244879, 
      "lng" : 46.645116399999999 
     } 
     }, 
     "icon" : "https:\/\/maps.gstatic.com\/mapfiles\/place_api\/icons\/restaurant-71.png", 
     "place_id" : "ChIJebIILG8dLz4Rwh96XLe4lDk", 
     "opening_hours" : { 
     "weekday_text" : [ 

     ], 
     "open_now" : true 
     }, 
     "photos" : [ 
     { 
      "width" : 960, 
      "height" : 1280, 
      "html_attributions" : [ 
      "<a href=\"https:\/\/maps.google.com\/maps\/contrib\/111982605117618652897\/photos\">*خارج الخدمه* *مؤقتا*<\/a>" 
      ], 
      "photo_reference" : "CmRaAAAAkcQXErGTRgMEXeTRjXyqdJxiOD9Bq3ApLu9MfiWXjd1gGaJ7LRmSm19mJdXuT8q-KD3Pg0XuK4rAAA_-JwQl8iAo-y3jx8oQ4Zn3hBRJkHBgzXxvIyQrs3Nd-JKinQdgEhCYkgEXcPpPtT0Z7tc1_FOxGhSQFuKsRZFDeRW5AUy9VLAR3MdRUA" 
     } 
     ], 
     "reference" : "CmRRAAAAYXlBsUXQooQOBk0EWmHmoRFbX4cCqm7bYUm0U2ODQYwqv8fXNCgxbFFuZp2m8NHT-La7Zdk6WDY0eGdJqBIyT08sqyY-b4vZFjHZY32CQXYdaKtjT54YDeXglWRRKcAdEhD0imBkJB_luly2EbQNFA47GhSUrev3SNxuTvSRCARzjOZ6zwt3bw", 
     "name" : "Hamburgini هامبرغيني", 
     "types" : [ 
     "restaurant", 
     "food", 
     "point_of_interest", 
     "establishment" 
     ] 
    }, 

次のようになります結果は var coordinate: [CLLocation] = [CLLocation]()です。結局、私は別の座標に最も近い場所を選ぶことができますか?

私のコード:

Alamofire.request(urlStr).responseJSON 
      { response in 
       if let value: AnyObject = response.result.value as AnyObject? { 
         //Handle the results as JSON 

         let data = JSON(value) 

       for (key,subJson):(String, JSON) in data["results"] { 

        let array = subJson["geometry"]["location"] 


       } 
     } 
     } 

答えて

1

私はあなたがこれを試すことができます理解していますが、私はあなたのモデルを作成することをお勧めして、JSONデータでそれを初期化必要なものに依存している場合。 '(:文字列値:キーJSON)' タプルタイプの

for (_, jsonDict): (String, JSON) in data["results"] { 
    guard let location = jsonDict[“geometry”][“location”] as? [String: Any] else { return } 

    if let latitude = location[“lat”] as? Double, let longitude = location[“lng”] as? Double { 
     let locationCoord = CLLocation(latitude: latitude, longitude: longitude) 
     coordinate.append(locationCoord) 
    } 
} 
+0

'値Iは、JSON応答が辞書であると思う' COORD [ 『LAT』]の横に何のメンバー」subscript''を有していません配列ではありません – leo0019

+0

@ leo0019あなたの変数配列には座標を持つすべての辞書が含まれていると思いました。私は私の答えを編集します。 –

+0

私の答えを見て!何とかこれは私のために動作しますが、私はまだそれがより見ずに、私はあなたを助けることができない、あなたのJSONの構造に依存leo0019 @ – leo0019

0
let array = subJson["geometry"]["location"].dictionaryValue 
       for (key,subJson):(String, JSON) in array { 
        // Do something you want 


        let latitude = array["lat"]?.doubleValue 
        let longitude = array["lng"]?.doubleValue 
        let location = CLLocation(latitude: latitude!, longitude: longitude!) 
         self.coordinate.append(location) 
関連する問題