图表在Xcode 14上无法编译。

28

我在库中遇到了以下错误 -

  • 类型 'ChartDataSet' 不符合协议 'RangeReplaceableCollection'。

  • 不可用的实例方法 'replaceSubrange(_:with:)' 被用来满足协议 'RangeReplaceableCollection' 的要求。


哪个库?你能展示相关的代码吗? - Paulw11
@Paulw11 danielgindi/Charts - Saurabh Sharma
1
作者需要接受此PR:https://github.com/danielgindi/Charts/pull/4942 - Paulw11
6个回答

75

将其附加到 扩展 ChartDataSet: RangeReplaceableCollection

public func replaceSubrange<C>(_ subrange: Swift.Range<Int>, with newElements: C) where C : Collection, ChartDataEntry == C.Element {
    entries.replaceSubrange(subrange, with: newElements)
    notifyDataSetChanged()
}

我现在遇到了一个奇怪的错误。当我进行上述更改时,我的图表代码编译正常,但Xcode报告说完全不同的包现在从项目中丢失了!什么鬼?另一个包仍然在原来的位置。 - john elemans
2
谢谢您的答案,就像救命稻草一样。 - Adarsh KC

1

它已经在主分支上修复了

将主分支添加到您的项目中,而不是在SPM中使用“Up to next major version”。 并在CacaoPods中使用:

pod 'Charts',:git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'


1

我正在使用Xcode 14.2。我从podFile中删除了Charts,然后通过SPM添加它。但是,请注意只包括Charts(4.1.0),而不是Dynamic Charts。后者会导致Algorithms出现“模块未找到”的错误。


0
我刚安装了Xcode 14.1,并在Charts cocoapod库上发现了多个错误。在网上找到了多种解决方案,但都没有完全解决问题并且让我感到合理。最后,使用Swift Package Manager来解决Charts的问题,效果非常好。
解决方案 - 从Podfile中移除Charts pod,并使用以下URL添加SPM(Swift Package Manager)来替代。
https://github.com/danielgindi/Charts.git

请确保您更改版本为:

upToNextMajor(from: "4.1.0")

enter image description here

希望能对遇到同样问题的人有所帮助。祝好运!

0

我也遇到了同样的问题。 我正在使用Swift包管理器导入图表,更新Swift包管理器后错误消失了。但是,图表版本仍为4.0。除了图表之外的其他软件包可能是罪魁祸首。


0
在您的Podfile中将平台版本增加到platform :ios,'12.0'或更高版本。 然后在pod文件中添加pod 'Charts'。然后在终端中输入pod install,安装的版本将是14.0.1,这是目前最新的版本,这将解决问题。 如果在上述步骤之后遇到初始化图表的问题,请添加以下代码以解决错误:
let pieChartDataSet = PieChartDataSet(entries: dataEntries, label: "") 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接