Xcode 14下Charts库编译失败:ChartDataSet协议适配错误求助
解决Xcode 14编译Charts库的两个兼容性错误
方案一:升级Charts库到兼容版本
Charts在v4.0.1及以上版本已经适配了Xcode 14和Swift 5.7的协议变化,直接更新即可解决问题:
- 用CocoaPods的话,修改Podfile里的依赖为
pod 'Charts', '~> 4.0.1',然后执行pod update Charts - 用Swift Package Manager的话,在Xcode的项目依赖里把Charts版本更新到4.0+
方案二:手动修改源码适配
如果暂时没法升级库,直接修改ChartDataSet.swift文件:
修复“ChartDataSet不符合RangeReplaceableCollection协议”错误
在ChartDataSet类里添加协议要求的空初始化器:
required init() { super.init(values: [], label: "") }
如果类里有自定义的初始化逻辑,调整这个空初始化器的实现以匹配现有代码逻辑即可。
修复“replaceSubrange(_:with:)已弃用”错误
找到ChartDataSet中原来的replaceSubrange实现,替换成符合协议要求的新版本:
func replaceSubrange<C>(_ subrange: Range<Int>, with newElements: C) where C : Collection, Element == C.Element { // 假设ChartDataSet内部用values数组存储数据,实际根据源码调整属性名 values.replaceSubrange(subrange, with: newElements) }
内容的提问来源于stack exchange,提问作者Saurabh Sharma
相关产品推荐
相关产品推荐

