Pergunta

Comecei com o Core-Lot agora e cheguei a alguns problemas. Eu segui o tutorial desta página: http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-pplication

e concluído com as instruções desta página: http://code.google.com/p/core-plot/wiki/usingcoreplotinApplications (como -all_load).

Mas ainda tenho alguns problemas, recebo os seguintes erros:

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

Alguém que sabe o que estou fazendo de errado? Este é o meu código:

- (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];
}
Foi útil?

Solução

O exemplo que você está apontando está desatualizado e não corresponde mais à API atual para a estrutura principal da plotagem. Sugiro começar com os aplicativos de amostra que enviam a estrutura (no diretório de exemplos), pois mantivemos os atualizados para corresponder a quaisquer alterações na API.

Por exemplo axisLabelOffset foi renomeado para labelOffset, defaultPlotSymbol não existe mais (você define o plotSymbol propriedade em uma instância do CPPLOT), o espaço da trama não tem mais um bounds propriedade, e você não precisa mais usar -initWithFrame: Para as instâncias do CPPLOT.

Novamente, basta usar os aplicativos de amostra que são enviados com a estrutura como modelo e trabalha a partir daí. Ainda não atingimos uma versão 1.0, então a API mudará à medida que estabilizamos e aprimoramos a estrutura.

Outras dicas

você está recebendo o erro de tipo incompatível porque o majorInterValle comprimento espera um NSDecimal E você está retornando um NSDecimalNumber. Veja se isso funciona para esses erros:

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

Para os outros, você está incluindo os arquivos de cabeçalho em algum lugar?

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

Eu acho que você está fornecendo caminho absoluto. Se você seguir a documentação do CorePlot, verá que eles mencionaram claramente "você deve dar um caminho relativo no campo de pesquisa de cabeçalho"

Para saber o que é um caminho relativo, segue ""http://webdesign.about.com/od/beginningtutorials/a/aa040502a.htm"

Obtenha o caminho completo do comando do Terminal "mdfind", como abaixo.

No tipo de terminal, mdfind -name Coreplot

terá o nome completo do caminho.

Pegue o caminho completo e insira no caminho da busca dos cabeçalhos

Junto com acima ... Adicione -objc a "Othetr Linker Sinalizadores" e adicione o trabalho de quadro de quartzo em "Link Binário com as bibliotecas"

Vai funcionar :)

Eu fiz o seguinte:

1) Adicionado #Import "CorePlot-cocoatouch.h" 2) Adicionado: UIViewController ao arquivo .h VC 3) Adicionado exatamente o mesmo código do CPTest App 4) Adicionado a estrutura CorePlot-Cocoatouch ao meu projeto, defina a dependência em Configurações de destino, defina a pesquisa de cabeçalho e outro link (usuários .../estrutura & -objc, respectivamente) nas configurações do projeto, adicionou a estrutura do quartzcore e, quando compilar, recebo:

importar "CorePlot-cocoatouch.h" nenhum arquivo ou diretório ....

Eu não entendo por que não está encontrando os arquivos de cabeçalho ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top