NSArray 元素无法匹配 Swift 数组元素类型 - Objective-C 与 Swift 库(图表)

NSArray element failed to match the Swift Array Element type - Objective-C With Swift Library (Charts)

我正在使用 iOS 图表库,但遇到以下错误消息:

fatal error: NSArray element failed to match the Swift Array Element type

我正在尝试使用以下 Objective-C 代码实现折线图:

NSMutableArray *dataSets = [[NSMutableArray alloc] init];
set1 = [[LineChartDataSet alloc] initWithValues:yVals];
[dataSets addObject:set1];
LineChartData *data = [[LineChartData alloc] initWithDataSets:dataSets];
_chartView.data = data;

错误发生在 ChartViewBase.swift 文件中的这一行。

for set in _data!.dataSets

_data 是一个 ChartData 对象,dataSets 是一个 [IChartDataSet] Swift 数组。

在 Objective-C 中使用 Swift 数组的解决方法是什么?

按如下操作

    NSMutableArray *xVals = [[NSMutableArray alloc] init];
    for (int i=0;i<dataPoints.count;i++)
    {
        [xVals addObject:[dataPoints objectAtIndex:i]];
    }

    NSMutableArray *yVals = [[NSMutableArray alloc] init];        
    for (int i=0;i<values.count;i++)
    {
        int val = [([values objectAtIndex:i])intValue];
        [yVals addObject:[[ChartDataEntry alloc] initWithValue:(int)val xIndex:i]];
    }

    LineChartDataSet *set1 = nil;
    set1 = [[LineChartDataSet alloc] initWithYVals:yVals label:@""];

    NSMutableArray *dataSets = [[NSMutableArray alloc] init];
    [dataSets addObject:set1];
    LineChartData *data = [[LineChartData alloc] initWithXVals:xVals dataSets:dataSets];
    lineChart.data = data;

与其只是给出答案,还不如了解正在发生的事情,然后着手寻找可能的解决方案。我遇到了同样的问题,对我来说,我没有将我的价值观包装在 ChartDataEntry class.

周围

例如

这个为我抛出了错误

NSArray *data = <some data>
LineChartDataSet *dataSet = [[LineChartDataSet alloc] initWithValues:data label:@"Predictions"];

这个效果很好!

NSArray *data = <some data>
NSMutableArray<ChartDataEntry *> *entries = [NSMutableArray new];

NSInteger index = 0;
for (NSNumber *value in data) {
    [entries addObject:[[ChartDataEntry alloc] initWithX:index y:[value doubleValue]]];
    index++;
}

LineChartDataSet *dataSet = [[LineChartDataSet alloc] initWithValues:entries label:@"Predictions"];