Xcode 9中使用SWXMLHash遇Element重复声明错误,Swift3.2下AEXML正常求解决
解决Xcode 9中SWXMLHash的「Invalid redeclaration of 'Element'」错误
这个问题我之前帮同事排查过,大概率是版本兼容性问题或者命名冲突导致的——毕竟Xcode 9对应Swift 4.0,和Swift 3.2有不少语法、API层面的变化。给你几个靠谱的解决方向:
升级SWXMLHash到适配Swift 4的版本
旧版本的SWXMLHash没有适配Swift 4/Xcode 9,这是最常见的原因。如果你用CocoaPods管理依赖,修改Podfile:pod 'SWXMLHash', '~> 4.0' # 4.x及以上版本正式支持Swift 4+然后执行
pod update SWXMLHash更新依赖。如果是手动导入的,直接替换成最新的适配版本即可。解决命名冲突问题
错误提示里的「Invalid redeclaration of 'Element'」,说明你的代码或其他依赖中也存在名为Element的类型,和SWXMLHash的内部类型重名了。可以这样处理:- 直接给SWXMLHash的类型加上命名空间前缀,比如用
SWXMLHash.Element代替裸写的Element; - 或者在导入时用别名重命名:
之后用import SWXMLHash typealias SWXMLElement = SWXMLHash.ElementSWXMLElement替代原来的Element即可。
- 直接给SWXMLHash的类型加上命名空间前缀,比如用
清理Xcode缓存
有时候旧的编译缓存会引发这类奇怪的错误,试试这些操作:- 按下
Command + Shift + K清理项目; - 找到Xcode偏好设置→Locations里的Derived Data路径,删除整个文件夹;
- 重启Xcode后重新编译项目。
- 按下
统一Swift版本设置
确保项目和SWXMLHash的Swift版本一致:在Xcode项目设置→Build Settings中,找到Swift Language Version,设置为Swift 4.0(Xcode 9默认版本),同时检查Pods中SWXMLHash的Swift版本也为4.0。
内容的提问来源于stack exchange,提问作者simatek
相关产品推荐
相关产品推荐

