Xcode9+Swift4导入KDDragAndDropCollectionViews后未声明类型错误求助
我来帮你梳理几个可能解决这个问题的方向,毕竟你已经试过了常规的清理、重装Pods操作,那我们可以从一些容易被忽略的细节入手:
确认Pod版本与Swift4/Xcode9的兼容性
有些第三方库的新版本可能不再适配旧环境,你可以在Podfile里指定明确的、支持Swift4的版本号。比如先查一下这个库的发布记录,找到对应Swift4的版本(比如1.3.0版本),然后修改Podfile为:pod 'KDDragAndDropCollectionViews', '~> 1.3.0'之后执行
pod install,再重新构建项目。验证Pod源码完整性
打开项目的Pods目录,找到KDDragAndDropCollectionViews文件夹,检查里面的源码是否包含KDDragAndDropCollectionViewDataSource和KDDragAndDropManager这两个类型。如果找不到,说明Pod下载不完整或者版本不对,导致这些类型根本不存在于你导入的库中。检查项目Build Settings配置
- 确认
Build Settings中的Framework Search Paths和Header Search Paths是否包含了该Pod的路径,正常情况下CocoaPods会自动配置,但如果配置被误改,就会导致无法识别库中的类型。你可以对比其他正常工作的Pod的配置,确保路径正确添加。 - 检查当前Target的
Swift Language Version是否设置为Swift4,有时候Target的Swift版本和项目全局版本不一致,也会引发导入异常。
- 确认
彻底清理缓存(比Clean更彻底)
除了Product -> Clean,建议你彻底删除Derived Data:- 打开Xcode,点击顶部菜单栏的
Xcode -> Preferences -> Locations - 找到
Derived Data对应的路径,打开文件夹后删除整个文件夹 - 重启Xcode,重新构建项目
这个操作能清除Xcode的深层缓存,有时候能解决一些奇怪的导入问题。
- 打开Xcode,点击顶部菜单栏的
尝试手动导入验证
先通过pod deintegrate卸载这个Pod,然后手动把该库的源码(从GitHub下载对应Swift4的版本)拖到你的项目中,看看能不能正常识别那两个类型。如果手动导入可以正常使用,说明问题出在CocoaPods的配置上;如果还是不行,那大概率是这个库本身在Swift4/Xcode9环境下存在兼容性问题。对比测试新项目
创建一个全新的Xcode9/Swift4测试项目,按照同样的步骤导入这个Pod,看看是否会出现同样的报错。如果测试项目正常,那说明你当前项目的配置存在异常,可以对比两个项目的Build Settings、Podfile配置,找出差异点。
内容的提问来源于stack exchange,提问作者1192805

