2009-12-11 2 views
2

Теперь я начал с сюжетного ядра и столкнулся с некоторыми проблемами. Я выполнил учебное пособие с этой страницы: http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-applicationПроблемы с CorePlot

и заполнен инструкциями на этой странице: http://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications (например, -all_load).

Но я до сих пор есть некоторые проблемы, я получаю следующие ошибки:

error: incompatible type for argument 1 of 'setMajorIntervalLength:' 
error: request for member 'axisLabelOffset' in something not a structure or union 
error: incompatible type for argument 1 of 'setMajorIntervalLength:' 
error: request for member 'axisLabelOffset' in something not a structure or union 
error: request for member 'bounds' in something not a structure or union 
error: request for member 'defaultPlotSymbol' in something not a structure or union 
error: request for member 'bounds' in something not a structure or union 

Тот, кто знает, что я делаю неправильно? Это мой код:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    graph = [[CPXYGraph alloc] initWithFrame: self.view.bounds]; 

    CPLayerHostingView *hostingView = (CPLayerHostingView *)self.view; 
    hostingView.hostedLayer = graph; 
    graph.paddingLeft = 20.0; 
    graph.paddingTop = 20.0; 
    graph.paddingRight = 20.0; 
    graph.paddingBottom = 20.0; 

    CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace; 
    plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-6) 
                length:CPDecimalFromFloat(12)]; 
    plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-5) 
                length:CPDecimalFromFloat(30)]; 

    CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet; 

    CPLineStyle *lineStyle = [CPLineStyle lineStyle]; 
    lineStyle.lineColor = [CPColor blackColor]; 
    lineStyle.lineWidth = 2.0f; 

    axisSet.xAxis.majorIntervalLength = [NSDecimalNumber decimalNumberWithString:@"5"]; 
    axisSet.xAxis.minorTicksPerInterval = 4; 
    axisSet.xAxis.majorTickLineStyle = lineStyle; 
    axisSet.xAxis.minorTickLineStyle = lineStyle; 
    axisSet.xAxis.axisLineStyle = lineStyle; 
    axisSet.xAxis.minorTickLength = 5.0f; 
    axisSet.xAxis.majorTickLength = 7.0f; 
    axisSet.xAxis.axisLabelOffset = 3.0f; 

    axisSet.yAxis.majorIntervalLength = [NSDecimalNumber decimalNumberWithString:@"5"]; 
    axisSet.yAxis.minorTicksPerInterval = 4; 
    axisSet.yAxis.majorTickLineStyle = lineStyle; 
    axisSet.yAxis.minorTickLineStyle = lineStyle; 
    axisSet.yAxis.axisLineStyle = lineStyle; 
    axisSet.yAxis.minorTickLength = 5.0f; 
    axisSet.yAxis.majorTickLength = 7.0f; 
    axisSet.yAxis.axisLabelOffset = 3.0f; 

    CPScatterPlot *xSquaredPlot = [[[CPScatterPlot alloc] 
            initWithFrame:graph.defaultPlotSpace.bounds] autorelease]; 
    xSquaredPlot.identifier = @"X Squared Plot"; 
    xSquaredPlot.dataLineStyle.lineWidth = 1.0f; 
    xSquaredPlot.dataLineStyle.lineColor = [CPColor redColor]; 
    xSquaredPlot.dataSource = self; 
    [graph addPlot:xSquaredPlot]; 

    CPPlotSymbol *greenCirclePlotSymbol = [CPPlotSymbol ellipsePlotSymbol]; 
    greenCirclePlotSymbol.fill = [CPFill fillWithColor:[CPColor greenColor]]; 
    greenCirclePlotSymbol.size = CGSizeMake(2.0, 2.0); 
    xSquaredPlot.defaultPlotSymbol = greenCirclePlotSymbol; 

    CPScatterPlot *xInversePlot = [[[CPScatterPlot alloc] 
            initWithFrame:graph.defaultPlotSpace.bounds] autorelease]; 
    xInversePlot.identifier = @"X Inverse Plot"; 
    xInversePlot.dataLineStyle.lineWidth = 1.0f; 
    xInversePlot.dataLineStyle.lineColor = [CPColor blueColor]; 
    xInversePlot.dataSource = self; 
    [graph addPlot:xInversePlot]; 
} 

ответ

10

Пример, на который вы указываете, устарел и больше не соответствует текущему API для фреймворка Core Plot. Я бы предложил начать с образцов приложений, которые поставляются с фреймворком (в каталоге примеров), поскольку мы сохранили эти обновления в соответствии с любыми изменениями API. не

Например axisLabelOffset был переименован в labelOffset, defaultPlotSymbol больше не существует (вы установите plotSymbol свойство на экземпляре CPPlot), участок пространства больше не имеет bounds свойство, и вам больше не нужно использовать -initWithFrame: для CPPlot экземпляров.

Опять же, просто используйте образцы приложений, которые поставляются с каркасом в качестве шаблона, и работайте оттуда. Мы еще не достигли версии 1.0, поэтому API изменится, когда мы стабилизируем и улучшаем структуру.

+0

сделаю. Спасибо за информацию. –

+0

Если вам нужна дополнительная помощь, не стесняйтесь спрашивать в списке рассылки: http://groups.google.com/group/coreplot-discuss?hl=ru –

+0

Спасибо Брэду за помощь. –

3

вы получаете несовместимый тип ошибки, потому что majorIntervalLength ожидает NSDecimal и вы возвращаете NSDecimalNumber. см., если это работает для этих ошибок:

axisSet.xAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"] decimalValue]; 

для остальных вы включаете файлы заголовков где-нибудь?

+0

Спасибо, что решили 2 из ошибок. Файлы заголовков включены в файл .h. #import «CorePlot-CocoaTouch.h» С уважением/Paul –

+0

также при просмотре заголовочного файла CPAxis, похоже, не существует n axisLabelOffset только labelOffset? –

-1

ив сделал следующее:

1) добавил #import "CorePlot-CocoaTouch.h" 2) добавил: UIViewController в .h В.- файл 3) добавлен один и тот же код из CPTest приложения 4) добавили рамки coreplot-cocoatouch в мой проект, установили зависимость в целевых настройках, установили поиск заголовков и другую ссылку (Users ..../framework & -ObjC соответственно) в настройках проекта, добавили структуру QuartzCore и когда i компиляция я получаю:

импорт "CorePlot-CocoaTouch.h" НЕТ ТАКИХ ФАЙЛОВ ИЛИ КАТАЛОГ ....

я не понимаю, почему его не найти файлы заголовков ...

+0

, поэтому я вручную перешел на целевые настройки и добавил пути поиска заголовков/Users/me/core = plot/framework +/framework/iPhoneOnly +/framework/Source, и теперь я получаю: A) Check Dependency = Пропуск файла/Пользователи/me/core-plot/framework/CorePlot-CocoaTouch.xcodeproj (неожиданный filetype 'wrapper.pb-project' b) Ссылка = ".objc_class_name_CPTheme", на который ссылается ... (целая группа) ... – mars

1
set the header search and other link (Users..../framework & -ObjC respectively) 

Я думаю, вы обеспечиваете Абсолютный путь. Если вы идете через corePlot документации вы увидите, что они ясно сказано, «Вы должны дать относительный путь в заголовок Поиск пути Поле»

, чтобы узнать, что относительный путь следовать, «http://webdesign.about.com/od/beginningtutorials/a/aa040502a.htm»

0

получить полный путь основного участка через терминальную команду «mdfind», как показано ниже.

В типа терминала, mdfind -name coreplot

получит полное имя.

Возьмите полный путь и вставить в HEADERS путь поиска

наряду с выше ... добавить -Objc в «Othetr Linker Flags» и добавить Quartz рамки работы в «Link Binary с библиотеками»

Это будет WORK :)