如何解决iOS下CocoaPod库'Charts'出现的CoreGraphics NaN错误?
Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
错误根因
Daniel Gindi维护的Charts库绘图时依赖CoreGraphics API,该API无法处理NaN(非数字)类型的数值,当传入的数据集、坐标轴配置中存在NaN值时,API会直接忽略所有绘图操作,最终表现为图表无任何数据绘制。
修复步骤
- 校验所有数据源数值合法性
构造ChartDataEntry之前对每个待传入的数值做非NaN、非无穷大校验,过滤或替换无效值,Swift参考代码:
Objective-C参考判断逻辑:// 原始数值校验 guard let targetY = rawYValue, targetY.isFinite else { // 可替换为0,或直接跳过该条数据 continue } let entry = ChartDataEntry(x: xIndex, y: targetY)if (isnan(rawYValue) || isinf(rawYValue)) { // 处理无效值 return; } - 校验坐标轴配置参数合法性
如果你手动设置了坐标轴的axisMinimum、axisMaximum、granularity等属性,确认所有配置值均为合法数字,且不存在最小值大于最大值的逻辑错误。 - 排查数据计算逻辑异常
重点检查百分比、比值类数据的计算逻辑,避免出现分母为0的操作,这类操作会直接生成NaN值,需要提前对分母做非0判断。 - 空数据场景适配
如果业务允许空数据展示,当数据集全为无效值或为空时,主动调用chartView.notifyDataSetChanged()刷新图表状态,避免异常绘图逻辑触发。
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

