我无法找到有关此的大量信息,并且我以任何方式都没有运气,我试图缩小这个问题的来源,所以我希望这里有人可以给我更多信息和潜力导致我可能会收到此错误。
我正在实时绘制数据集,因为数据集通过我不断接收新数据而不断增加。当我收到新数据时,我会花时间将其作为 x 并将值本身作为 y,这就是我生成积分的方式。
完全错误:由于未捕获的异常而终止应用程序'CPTException', reason: 'Number of x and y values do not match'
我在崩溃前查看了我的数据集,我确保我的点创建从未失败过,也没有任何问题。我猜此时这与我的散点图版本有关,可能在 numberOfRecordsForPlot 函数中。但是,它似乎并没有在该功能的任何地方崩溃。崩溃通常在 10 多秒后才会发生,但它再次不一致,并且在它崩溃并且正在完美地工作绘图之前。
非常感谢人们对此有所了解。
PS:如果人们想看代码,请告诉我,任何非标准的我已经验证可以尽我所能发挥作用,与散点图有关的任何事情都是相当标准的。
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
//Translation: The array with key of the top of the first selected parameter
NSInteger curCount = [self.graphParams count];
NSLog(@"Current Count: %d", curCount);
if ([plot.identifier isEqual:@"Sel_1"] && (curCount >= 1) ) {
if ([self.graphParams objectAtIndex: 0] != nil) {
//NSString *myText = ((UITableViewCell *)[self.graphParams objectAtIndex: 0]).textLabel.text;
//NSInteger myNum = [[self.graphData objectForKey: myText] count];
//return [[self.graphData objectForKey: myText] count];
//return [[self.graphData objectForKey: ((UITableViewCell *)[self.graphParams objectAtIndex: 0]).textLabel.text] count];
return [[self.graphData objectForKey: [self.graphParams objectAtIndex: 0]] count];
}
else
return 0;
}
else if ([plot.identifier isEqual:@"Sel_2"] && (curCount >= 2) ) {
if ([self.graphParams objectAtIndex: 1] != nil)
//return [[self.graphData objectForKey: ((UITableViewCell *)[self.graphParams objectAtIndex: 1]).textLabel.text] count];
return [[self.graphData objectForKey: [self.graphParams objectAtIndex: 1]] count];
else
return 0;
}
else if ([plot.identifier isEqual:@"Sel_3"] && (curCount >= 3) ) {
if ([self.graphParams objectAtIndex: 2] != nil)
//return [[self.graphData objectForKey: ((UITableViewCell *)[self.graphParams objectAtIndex: 2]).textLabel.text] count];
return [[self.graphData objectForKey: [self.graphParams objectAtIndex: 2]] count];
else
return 0;
}
return 0;
}
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
//Translation: The array with key of the top of the first selected parameter
NSValue *value = nil;
if ( [plot.identifier isEqual:@"Sel_1"] ) {
value = [[self.graphData objectForKey: [self.graphParams objectAtIndex:0]] objectAtIndex:index];
}
else if ( [plot.identifier isEqual:@"Sel_2"] ) {
value = [[self.graphData objectForKey: [self.graphParams objectAtIndex: 1]] objectAtIndex:index];
}
else if ( [plot.identifier isEqual:@"Sel_3"] ) {
value = [[self.graphData objectForKey: [self.graphParams objectAtIndex: 2]] objectAtIndex:index];
}
if (value != nil)
{
CGPoint point = [value CGPointValue];
if ( fieldEnum == CPTScatterPlotFieldX )
return [NSNumber numberWithFloat:point.x];
else if ( fieldEnum == CPTScatterPlotFieldY )
return [NSNumber numberWithFloat:point.y];
}
return [NSNumber numberWithFloat:0];
}
编辑:发布了一些我认为错误可能来自的散点图代码,但我不知道这对你们中的任何人有多大用处。一如既往地评论额外的请求,我很乐意提供任何有意义的东西。