Xcode14单元测试出现SwiftyJSON未定义符号错误求助
解决Xcode 14中SwiftyJSON未定义符号编译错误
这些未定义符号错误本质是单元测试目标未正确关联SwiftyJSON依赖,结合Xcode 14的构建特性,可按以下步骤排查修复:
确认单元测试目标的依赖链接
- 选中项目中的单元测试Target(如
PurchHistTests),进入Build Phases>Link Binary With Libraries - 检查是否存在
SwiftyJSON.framework,若没有则点击+搜索添加 - 若使用CocoaPods,确保Podfile为测试目标声明了依赖:
执行target 'PurchHist' do use_frameworks! pod 'SwiftyJSON' end target 'PurchHistTests' do inherit! :search_paths pod 'SwiftyJSON' endpod install重新同步依赖
- 选中项目中的单元测试Target(如
切换构建系统适配
Xcode 14默认的新构建系统可能与旧版本SwiftyJSON存在兼容问题,尝试切换到Legacy构建系统:- 打开项目文件,点击
File>Project Settings(或Workspace Settings) - 将
Build System改为Legacy Build System - 执行
Cmd+Shift+KClean项目后重新构建
- 打开项目文件,点击
升级SwiftyJSON到兼容版本
确认当前SwiftyJSON版本支持Xcode 14,建议升级到5.x及以上版本,执行pod update SwiftyJSON更新依赖清理构建缓存
- 执行
Cmd+Option+Shift+K清理构建文件夹 - 通过
Window>Organizer>Projects找到当前项目,删除DerivedData文件夹 - 重启Xcode后重新编译
- 执行
优化Mock代码(可选)
你的Mock类中let json = JSON()属于冗余初始化,可直接在调用时传入空JSON对象,减少不必要的依赖引用:viewModel.reportService.createReport(withParams: JSON(), completion: { error, errors in // ... 原有逻辑 })
内容的提问来源于stack exchange,提问作者Brogrammer
相关产品推荐
相关产品推荐

