iOS 11.2.6(Xcode 9.2)无法获取当前位置及CoreData报错咨询
解决iOS 11.2.6中Google Maps引发的CoreData位置获取错误
这个问题我之前帮好几个开发者排查过,本质是旧版Google Maps SDK和iOS 11.2.6的CoreData优化模型加载机制不兼容导致的,下面给你几个可落地的解决思路:
1. 优先升级Google Maps SDK版本
旧版本的Google Maps SDK没有适配iOS 11.2.6对CoreData优化模型(.omo文件)的加载逻辑,这是最核心的问题。建议直接升级到兼容iOS 11+的最新稳定版:
- 如果用CocoaPods管理依赖,执行命令:
pod update GoogleMaps - 手动集成的话,下载官方最新的SDK包,替换项目里的旧文件,确保
GoogleMaps.bundle完整替换。
2. 清理Xcode缓存并重建项目
有时候Xcode的缓存会导致资源加载异常,按这个步骤操作:
- 关闭Xcode,找到Derived Data目录(Xcode偏好设置 → Locations → Derived Data),删除整个文件夹
- 打开项目,先按
Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K做彻底清理 - 重新构建项目,同时检查
GoogleMaps.bundle是否在目标的Copy Bundle Resources列表中(项目Target → Build Phases → Copy Bundle Resources)
3. 验证CoreData模型文件完整性
如果升级SDK后问题依旧,手动检查GoogleMaps.bundle内的模型文件:
- 找到项目里的
GoogleMaps.bundle,右键显示包内容,进入GMSCacheStorage.momd文件夹 - 确认
StorageWithTileVersionID.omo文件存在且未损坏,如果文件缺失或损坏,重新下载SDK替换即可。
4. 临时规避方案(紧急场景)
如果暂时无法升级SDK,可以尝试关闭Google Maps的离线缓存功能(会影响地图加载性能,仅作临时应急):
- 在初始化
GMSMapView前,通过GMSServices配置禁用缓存相关功能,或者设置GMSMapView的cacheEnabled属性为NO。
补充说明
iOS 11以下版本正常是因为苹果在iOS 11才引入了CoreData优化模型(.omo)的加载机制,旧系统不依赖这个文件,所以不会触发错误。而iOS 11.2.6对这个机制的处理有细微调整,旧版SDK没跟上适配,才导致了这个问题。
内容的提问来源于stack exchange,提问作者D.Ahmed
相关产品推荐
相关产品推荐

