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

Why Google Maps crashes with "Attempt to set an unknown enum value" error?

我为 iOS 使用 Google Maps SDK 的 3.1.0 版本。在 loadView 函数中将 view 分配给 GMSMapView 时,应用程序崩溃并出现以下错误:'NSInvalidArgumentException', reason: 'GMSx_GMMClientPropertiesRequestProto.screenPixelDensity: Attempt to set an unknown enum value (0)'。为什么会这样真的很奇怪。我试图降级 Google 地图的版本,但没有帮助。在AppDelegate中,我提供API_KEY。这是我的代码,我如何使用 Google 地图:

lazy var mapView: GMSMapView = GMSMapView(frame: .zero)

override func loadView() {
    super.loadView()

    view = mapView

}

出现此错误的原因是什么以及如何解决?

更新一: 我做了一个小实验,并使用以下简单代码在多个设备上进行了测试:

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

更新 2: 试图避免自己初始化 mapView 变量。创建故事板,添加视图并指示 class 是 GMSMapView 并连接到我的视图控制器。从 VC 中删除了以上所有代码。在 iPhone 7 中工作,在 iPhone SE 中失败并出现相同的错误。

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

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

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

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

所以通过评论它,然后重新安装我的应用程序,它成功了!