Xcode报‘No such module’错误:已安装CocoaPods及Dialogflow Pod
我之前在把Dialogflow(也就是原来的Api.AI)集成到Swift项目时,也碰到过一模一样的「No such module」报错,给你几个亲测有效的排查和解决步骤:
先确认你打开的是正确的项目文件
用CocoaPods集成后,Xcode默认的.xcodeproj已经不包含Pod的依赖了,必须关闭当前打开的项目,重新打开项目根目录下的.xcworkspace文件——这是很多人踩坑的第一步!检查Podfile配置与执行步骤
确保你的Podfile里写了正确的依赖,现在Api.AI已经迁移到Dialogflow,所以应该用pod 'DialogflowSwift'(如果是旧版本需求可以用pod 'ApiAI')。写完Podfile后,一定要在项目根目录执行pod install,并且盯着终端输出,确保没有任何错误提示。如果之前执行过pod install但没效果,可以试试先执行pod deintegrate彻底移除旧的Pod集成,再重新pod install。验证Pod是否真的集成成功
打开Xcode的target设置,切换到Build Phases标签页,查看Link Binary With Libraries列表,里面应该能看到DialogflowSwift.framework或者ApiAI.framework。如果没有,说明Pod没有正确安装,仔细看pod install时的终端日志,有没有遗漏的错误信息。修复Xcode的Build Settings配置
进入target的Build Settings,搜索Framework Search Paths,确保里面添加了$(inherited),并且设置为递归模式(可以写成$(inherited) recursive)。另外,搜索Other Linker Flags,也要确保包含$(inherited),这能让Xcode正确加载CocoaPods的配置。清理Xcode缓存,重新构建
有时候缓存会搞鬼,按下Cmd+Shift+K清理项目,再用Cmd+B重新构建。如果还是不行,就去删除Derived Data:打开Xcode的Preferences→Locations,点击Derived Data旁边的箭头,找到你项目对应的文件夹删掉,然后重启Xcode再试。确认版本兼容性
不同版本的Dialogflow Pod对Swift和Xcode版本有要求,比如旧版的ApiAI Pod只支持Swift 3及以下,如果你用的是Swift 5+的新版Xcode,就得选兼容的Dialogflow版本,比如在Podfile里指定:pod 'DialogflowSwift', '~> 2.0'(具体版本可以根据你的Xcode版本调整)。
内容的提问来源于stack exchange,提问作者VivaciousVipin

