【问题标题】:How do I spot a custom location in Swift 3?如何在 Swift 3 中发现自定义位置?
【发布时间】:2017-03-01 20:22:35
【问题描述】:

我一直在努力尝试在地图上发现一个自定义位置...基本的东西(使用 google maps sdk)。

但我在运行时仍然遇到致命错误。

也许我没有正确地将 JSON 格式转换为字典对象?

        geocodeURLString = geocodeURLString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)!


                dictionary = try JSONSerialization.jsonObject(with: geocodingResultsData! as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! Dictionary<NSObject, AnyObject>

                //ERROR HERE: fatal error: unexpectedly found nil while unwrapping an Optional value


                // Get the response status.

                let status = dictionary["status" as NSObject] as! String

                if status == "OK" {

                    let allResults = dictionary["results" as NSObject] as! Array<Dictionary<NSObject, AnyObject>>


}

【问题讨论】:

    标签: ios swift swift3 google-maps-sdk-ios


    【解决方案1】:

    我不完全确定这是否是您的错误。因为如果您的 json 解析不起作用,它只会返回 []。但是既然你特别问了,你可以试试这个。

    我认为你需要一个来自谷歌的应用程序的 API 密钥来进行 JSON 解析,你可以在这里创建它 - https://console.developers.google.com

    另外, "https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY" -- 这是用于解析的正确格式的 url 字符串。

    您可以在此处参考 Google Docs 以供参考 -https://developers.google.com/maps/documentation/geocoding/intro

    您还可以通过将 url 字符串传递给浏览器来验证它是否有效。这将返回您的 JSON 页面。如果它不起作用,它也会返回错误。

    我希望这会有所帮助...一切顺利!

    【讨论】:

    • 我认为您不需要 API 密钥来请求地址,仅用于方向。但你是对的,问题是我的编码很奇怪,我的地址 url 无效
    【解决方案2】:

    首先,如果您不确定通过将字符串值粘贴在一起构建的 URL 是否为您提供了正确编码的字符串,我建议您使用 URL 组件创建所需的 URL。您尝试通过 URL 主机规则对整个字符串进行编码,这对于 URL 字符串的其他部分来说并不合适。通过 URL 组件和 URL 查询项进行组合使您可以选择使用原始数据,因为组件可以使用可用的 getter 自动转换为正确编码的字符串。

    其次,如果你强制解包一个可选项,你是故意这样做的,你应该准备好它可能会崩溃,换句话说,你仍然需要处理这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2017-03-30
      • 2018-02-16
      相关资源
      最近更新 更多