iOS 15运行出现NSKeyedUnarchiver警告 仅用Mapbox框架如何修复
问题原因
这个警告是iOS 15对NSKeyedUnarchiver新增的安全校验触发的,Mapbox框架内部的本地缓存解档逻辑,仅将NSDictionary加入了允许解档的类集合,但实际字典存储的内容包含NSString、NSNumber类型的对象,不符合校验规则。目前该警告仅为提前通知,不会导致现有功能崩溃,苹果会在后续系统版本中强制禁止这类不符合规则的解档操作。
修复方案
- 优先升级Mapbox SDK版本:Mapbox官方已经在iOS端SDK v10.4.0及后续稳定版本中修复了该问题,将解档所需的所有关联类都加入了允许集合,升级到对应版本即可彻底消除警告。
- 临时规避方案:如果当前项目暂时无法升级SDK,可忽略该警告,现阶段不会影响业务功能正常运行。如果是业务代码中自行调用NSKeyedUnarchiver解档Mapbox相关缓存数据触发警告,可修改解档代码,补全允许类集合:
NSError *error = nil; NSDictionary *result = [NSKeyedUnarchiver unarchivedObjectOfClasses:[NSSet setWithObjects:NSDictionary.class, NSString.class, NSNumber.class, nil] fromData:cacheData error:&error];
内容的提问来源于stack exchange,提问作者EK412
相关产品推荐
相关产品推荐

