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"];
我正在使用 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"];