【问题标题】:Save JSON results in [CLLocation] SWIFT在 [CLLocation] SWIFT 中保存 JSON 结果
【发布时间】:2017-11-11 12:51:03
【问题描述】:

我的代码会获取特定位置附近的地点。我设法获得了附近所有位置的坐标,json 看起来像这样:

更新的 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"]


                }
        }
        }

【问题讨论】:

    标签: json swift swift3 swifty-json


    【解决方案1】:

    如果我理解你可以试试这个,但根据你的需要,我建议创建你的模型并用你的 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) 
        }
    }
    

    【讨论】:

    • Value of tuple type '(key: String, value: JSON)' has no member 'subscript' 旁边 coord[“lat”] 我认为 json 响应是字典而不是数组
    • @leo0019 我认为您的变量数组包含所有带有坐标的字典。我将编辑我的答案。
    • 看我的回答!!不知何故这对我有用,但我仍然认为发生了一些奇怪的事情
    • @leo0019 这取决于你的 Json 结构,没有看到更多我无法帮助你:/
    • 请再次检查我的问题
    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      相关资源
      最近更新 更多