2016-11-15 75 views
1

我使用了iOS圖表庫,和我遇到了以下錯誤消息:NSArray的元素眼福雨燕數組元素類型 - Objective-C的與SWIFT庫(圖表)

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

我「M試圖執行與下列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 

_dataChartData對象和dataSets[IChartDataSet]夫特陣列。

什麼是用Objective-C的斯威夫特陣列工作的一個解決方法嗎?

+0

你是如何建立yVals陣列? –

回答

1

做如下。

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; 
0

而不是隻給一個答案,它可能會更好地理解發生了什麼,然後進行一個可能的解決方案。我有同樣的問題,對我來說我是不是纏繞在ChartDataEntry類我的價值觀。

E.G.

這一個扔了錯誤,我

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"]; 
相關問題