Xcode 13.1加载Xcode 12创建的项目时崩溃问题求助
故障根因
Xcode 13.1崩溃是因为Info.plist的字段格式校验逻辑比Xcode 12更严格:报错中-[__NSArrayM allKeys]: unrecognized selector说明Xcode解析plist时预期读取字典类型的字段,实际读到的是可变数组类型,调用字典专属的allKeys方法时触发异常崩溃。
排查解决步骤
- 优先检查Info.plist中3类高频出问题的系统字段:
CFBundleURLTypes字段:确认该数组下的每一项是字典类型,没有误写成数组嵌套数组的结构- 移动端项目的
UIApplicationSceneManifest/桌面端项目的NSApplicationSceneManifest字段:检查其中UISceneConfigurations/NSSceneConfigurations下的子项类型,确认所有配置项为字典而非数组 - 自定义多层级嵌套字段:确认所有本该是键值对的层级没有误写为数组
- 快速排查方法:右键点击项目中的Info.plist,选择
Open As -> Source Code查看源码格式,对比所有字段标签,<dict>开头的节点不要误写为<array> - 验证方案:将现有Info.plist替换为新建Xcode 13项目自动生成的默认Info.plist,确认替换后Xcode不再崩溃后,逐步将自定义配置移入新plist,即可定位出问题的具体字段
常见错误示例
错误写法(CFBundleURLTypes子项误写为数组):
<key>CFBundleURLTypes</key> <array> <array> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> </array> </array> </array>正确写法(子项为字典类型):
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> </array> </dict> </array>
内容的提问来源于stack exchange,提问作者Igor Jorin
相关产品推荐
相关产品推荐

