为什么谷歌地图崩溃并出现"Attempt to set an unknown enum value"错误?



i使用3.1.0版的Google Maps SDK用于iOS。在loadView功能中将view分配给GMSMapView时,应用程序会崩溃,以下错误:'NSInvalidArgumentException', reason: 'GMSx_GMMClientPropertiesRequestProto.screenPixelDensity: Attempt to set an unknown enum value (0)'。它发生的原因真的很奇怪。我试图降级Google Maps的版本,但这无济于事。在AppDelegate中,我提供API_KEY。这是我的代码,我如何使用Google地图:

lazy var mapView: GMSMapView = GMSMapView(frame: .zero)
override func loadView() {
    super.loadView()
    view = mapView
}

发生此错误以及如何解决该错误的原因是什么?

update-1:我进行了一些实验,并在几个设备中测试了以下简单代码:

override func viewDidLoad() {
    super.viewDidLoad()
    let mapView = GMSMapView()
    let dummyView = UIView()
    dummyView.backgroundColor = .purple
    view = mapView
}

此代码在iPhone 7上成功显示了一张地图,但在iPhone SE上出现同样的错误失败。两个设备在iOS 12.3.1上运行。它在初始化mapView时未能将其设置为view。即使我将dummyView设置为view,它也会崩溃,因为我初始化了mapView

Update-2:试图避免我自己初始化mapView变量。创建的故事板,添加了视图,并指出该类是GMSMapView并连接到我的视图控制器。从VC中删除了上述代码。在iPhone 7中工作,在iPhone SE中失败了,但错误的错误。

update-3:创建了新项目,并使用相同的API_KEY显示地图。它在iPhone SE工作!这意味着,问题不在设备中,而是在项目中。仍然不知道它在哪里,但也许是在豆荚中。

最后,在上面的所有更新之后,我想到了一个想法,我应该在手机中删除该应用并再次运行。然后,它起作用了!我不知道为什么它起作用。可能,此错误仅发生在该应用程序的调试版本中。

我在应用程序中使用本地化,当我更改语言时,我还添加了以下代码:

UserDefaults.standard.setValue(lang, forKey: "AppleLanguages")
UserDefaults.standard.synchronize()

因此,通过评论它,然后重新安装我的应用程序,它起作用了!

相关内容

  • 没有找到相关文章

最新更新