#ios #objective-c #core-plot
#iOS #objective-c #core-plot
Вопрос:
Я пытаюсь нарисовать график с версией библиотеки CorePlot 1.5.1.It нормально, когда приложение запускается на Ipad, но когда оно запускается на Iphone, график не анимируется, и в консоли отладки появляется следующая ошибка
Assertion failure in -[CPTXYPlotSpace setXRange:], /Users/eskroch/Projects/Core Plot/framework/Source/CPTXYPlotSpace.m:377
Код для анимации графика:
-(void)newData:(NSTimer *)theTimer
{
[Utils logClassObject:self andMethod:_cmd];
if(_beacon)
{
CPTGraph *theGraph = layerHostingView.hostedGraph;
CPTPlot *thePlot = [theGraph plotWithIdentifier:kPlotIdentifier];
if ( thePlot ) {
if(_isDrawing)
{
if ( _arrayOfRSSI.count >= kMaxDataPoints ) {
[_arrayOfRSSI removeObjectAtIndex:0];
[_arrayOfTime removeObjectAtIndex:0];
[thePlot deleteDataInIndexRange:NSMakeRange(0, 1)];
}
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)theGraph.defaultPlotSpace;
NSUInteger location = ([[_arrayOfTime lastObject] intValue] >= kMaxDataPoints ? [[_arrayOfTime lastObject] intValue] - kMaxDataPoints : 0);
CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger( (location > 0) ? location : 0 )
length:CPTDecimalFromUnsignedInteger(kMaxDataPoints)];
CPTPlotRange *newRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger((location>0 || ([[_arrayOfTime lastObject] intValue] >= kMaxDataPoints))?(location==0?5:location 5):location)
length:CPTDecimalFromUnsignedInteger(kMaxDataPoints)];
[CPTAnimation animate:plotSpace
property:@"xRange"
fromPlotRange:oldRange
toPlotRange:newRange
duration:CPTFloat(1.0 / 20)];
[_arrayOfRSSI addObject:@(_beacon.rssi)];
[_arrayOfTime addObject:@(currentIndex*5)];
[thePlot insertDataAtIndex:_arrayOfRSSI.count - 1 numberOfRecords:1];
AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
[delegate.csvData appendFormat:@"%@;", _macAddress!=nil?[Utils stringToHex:_macAddress]:@"0"];
[delegate.csvData appendFormat:@"%d;",5*currentIndex];
[delegate.csvData appendFormat:@"%d;n", (int)_beacon.rssi];
}
currentIndex ;
}
}
}
Комментарии:
1. Посмотрите на стек вызовов в Xcode после сбоя утверждения. Где произошел сбой? Был
-setXRange:
вызван откуда-то из вашего приложения или из чего-то внутреннего для Core Plot? Поскольку опубликованный вами код выглядит нормально и работает на iPad, я подозреваю, что где-то в версии вашего приложения для iPhone есть проблема.2. @EricSkroch спасибо, я нашел решение из вашего комментария к проблеме 🙂
Ответ №1:
Я нашел, в чем была проблема.Была проблема с тем же типом проблемы, поэтому, когда мне понравилось, как было сказано в комментарии к этой проблеме, и я загрузил новую версию библиотеки, все заработало так, как ожидалось