2014-10-08 3 views
0

Я недавно начала тестировать мое приложение на моем 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]; 
} 
+0

Это [утверждение] (https://github.com/core-plot/core-plot/blob/release_1.5.1/framework/Source/CPTXYPlotSpace.m#L416) означает, что что-то пыталось изменить 'yRange' на «ниль». У вас есть трассировка стека с крахом? Это сбой в ответ на некоторые действия из вашего приложения или что-то внутреннее в Core Plot (например, анимация)? –

+0

это в ответ на анимацию. Когда пользователь нажимает на точку данных на графике, я одушевляю оси для увеличения в точке данных, поэтому задавайте команды setXRange и setYRange throw. –

+0

@EricSkroch Я добавил функцию, в которой он терпит неудачу, сразу после вызова CPTAnimation. Я также проверил, чтобы убедиться, что я не устанавливал диапазоны на нуль –

ответ

0

Это была ошибка в Core Plot. Я считаю, что он был исправлен в последнем коде на GitHub. Вам нужно будет вывести последний код и построить Core Plot из источника. Посмотрите на change log, чтобы увидеть все, что изменилось с 1.5.1.

+0

Awesome thanks a ton –

Смежные вопросы