【问题标题】:App Crash in GMSPlace Picker while running on device.(iOS 8.3)在设备上运行时 GMSPlace Picker 中的应用程序崩溃。(iOS 8.3)
【发布时间】:2015-12-29 11:12:42
【问题描述】:

我正在使用以下代码按照 Google 的建议选择位置

https://developers.google.com/places/ios-api/placepicker

    var placePicker: GMSPlacePicker?

    override func viewDidLoad()
    {
        super.viewDidLoad()
        self.pickPlace()
    }

  func pickPlace()
    {
        let center = CLLocationCoordinate2DMake(51.5108396, -0.0922251)
        let northEast = CLLocationCoordinate2DMake(center.latitude + 0.001, center.longitude + 0.001)
        let southWest = CLLocationCoordinate2DMake(center.latitude - 0.001, center.longitude - 0.001)
        let viewport = GMSCoordinateBounds(coordinate: northEast, coordinate: southWest)
        let config = GMSPlacePickerConfig(viewport: viewport)
        placePicker = GMSPlacePicker(config: config)

        placePicker?.pickPlaceWithCallback({ (place: GMSPlace?, error: NSError?) -> Void in
            if let error = error
            {
                print("Pick Place error: \(error.localizedDescription)")
                return
            }

            if let place = place
            {
                print("Place name \(place.name)")
                print("Place address \(place.formattedAddress)")
                print("Place attributions \(place.attributions)")
                self.navigationController?.popToRootViewControllerAnimated(true)


            } else
            {
                print("No place selected")
            }
        })
    }

此代码的问题是它在模拟器上完美运行,但在 iOS 8.3 设备上它崩溃而没有给出任何消息

【问题讨论】:

  • 你启用了僵尸对象吗?它可以为您提供更多详细信息
  • 是的,我做了 Product->Edit Scheme->Diagnostics-> 点击 Enable Zombie Objects。但不影响任何东西。:(
  • 您是否允许您的应用获取位置,或者您是否在您的真实设备中设置了定位服务?您可以在代码上设置断点以查看崩溃的位置吗?
  • 是的,我总是得到许可。它在 AppDelegate 上崩溃。
  • 对不起,愚蠢的解决方案,但你可以删除你的应用程序,重新启动手机并重新构建:)),我不知道为什么它不起作用。

标签: ios swift google-maps gmsplace


【解决方案1】:

将 NSError 更改为错误

placePicker?.pickPlaceWithCallback({ (place: GMSPlace?, error: Error?)

在 AppDelegate 类中导入这两个

import GoogleMaps
import GooglePlaces

而且,您需要在 didFinishLaunchingWithOptions 中同时设置这些

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        GMSServices.provideAPIKey("Your key")
        GMSPlacesClient.provideAPIKey("Your key")

        return true
    }

我用设备看不到错误信息,只有在模拟器中测试过

【讨论】:

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