Я недавно начала тестировать мое приложение на моем iPhone 6 плюса и при выборе точки данных с использованием coreplot из графика я рисовал, я сообщения об ошибках, таких как следующее: отказAssertation Неудача в CorePlot
утверждения - [ CPTXYPlotSpace setYRange:], /Users/joshhamet/Downloads/core-plot-release_1.5.1/framework/Source/CPTXYPlotSpace.m:416
Однако он отлично работает с моим iPhone 5, поэтому мне было любопытно, объясните, как это исправить. Вот какой код. Благодаря!
-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)idx
{
/*Set the index selected and call for graph to be redrawn so selected symbol will be red*/
self.indexSelected=idx;
[self.graph reloadData];
CPTPlotRange *newXRange=[CPTPlotRange new];
/*If we have a daily graph, we need to calculate the x coordinate ourselves*/
if([self.graphTitle isEqualToString:@"Daily"]){
double location=[[self xIndexForDailyGraph:idx]doubleValue]-1;
if(location<=0)
newXRange=[CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromDouble(2)];
else
newXRange=[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(location) length:CPTDecimalFromDouble(2)];
}
/*Monthly and Weekly graphs x coordinate*/
else{
if(!idx){
newXRange=[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(idx) length:CPTDecimalFromDouble(2)];
}
else{
newXRange=[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(idx-1) length:CPTDecimalFromDouble(2)];
}
}
/*Determine the y index of the index (Depends on the current day or month)*/
if([self.graphTitle isEqualToString:@"Weekly"]){
NSInteger weekday=[[NSCalendar currentCalendar]component:NSCalendarUnitWeekday fromDate:[NSDate date]];
idx=(weekday+idx)%7;
}
if([self.graphTitle isEqualToString:@"Monthly"]){
NSInteger currentMonth=[[NSCalendar currentCalendar]component:NSCalendarUnitMonth fromDate:[NSDate date]];
idx=(currentMonth+idx)%12;
}
double selectedPoint=[[self.urinationDataArray[idx] objectForKey:@"amountOfUrine"]doubleValue];
CPTPlotRange *newYRange=[CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(selectedPoint-10) length:CPTDecimalFromDouble(20)];
[CPTAnimation animate:self.plotSpace property:@"xRange" fromPlotRange:self.plotSpace.xRange toPlotRange:newXRange duration:.1 animationCurve:CPTAnimationCurveCubicInOut delegate:self];
[CPTAnimation animate:self.plotSpace property:@"yRange" fromPlotRange:self.plotSpace.yRange toPlotRange:newYRange duration:.1 animationCurve:CPTAnimationCurveCubicInOut delegate:self];
/*Add Text Annotation*/
[self addAnnotationAtRecordIndex:idx forPlot:plot];
}
Это [утверждение] (https://github.com/core-plot/core-plot/blob/release_1.5.1/framework/Source/CPTXYPlotSpace.m#L416) означает, что что-то пыталось изменить 'yRange' на «ниль». У вас есть трассировка стека с крахом? Это сбой в ответ на некоторые действия из вашего приложения или что-то внутреннее в Core Plot (например, анимация)? –
это в ответ на анимацию. Когда пользователь нажимает на точку данных на графике, я одушевляю оси для увеличения в точке данных, поэтому задавайте команды setXRange и setYRange throw. –
@EricSkroch Я добавил функцию, в которой он терпит неудачу, сразу после вызова CPTAnimation. Я также проверил, чтобы убедиться, что я не устанавливал диапазоны на нуль –