Frage

Ich begann jetzt mit Core-Plot und kam zu einigen Problemen. Ich folgte dem Tutorial von dieser Seite: http://www.switchonthecode.com/tutorials/using-core-plot-in-iPhone-application

und mit den Anweisungen von dieser Seite fertiggestellt: http://code.google.com/p/core-plot/wiki/usingcoreplotinapplications (wie -all_load).

Aber ich habe immer noch einige Probleme, ich bekomme die folgenden Fehler:

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

Wer weiß, was ich falsch mache? Dies ist mein Code:

- (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];
}
War es hilfreich?

Lösung

Das Beispiel, auf das Sie zeigen, ist veraltet und stimmt nicht mehr mit der aktuellen API für das Kernplot -Framework überein. Ich würde vorschlagen, mit den Beispielanwendungen zu beginnen, die mit dem Framework (im Beispielverzeichnis) versandt werden, da wir diese aktualisiert haben, um alle API -Änderungen zu entsprechen.

Zum Beispiel axisLabelOffset wurde umbenannt in labelOffset, defaultPlotSymbol existiert nicht mehr (Sie setzen die plotSymbol Eigenschaft auf einer CPPLOT -Instanz), der Handlungsraum hat keinen Platz mehr bounds Eigenschaft, und Sie müssen nicht mehr verwenden -initWithFrame: Für die CPPLOT -Instanzen.

Verwenden Sie erneut die Beispielanwendungen, die mit dem Framework als Vorlage versandt werden, und arbeiten Sie von dort aus. Wir haben noch keine Veröffentlichung von 1.0 erreicht, sodass sich die API ändern wird, wenn wir den Rahmen stabilisieren und verbessern.

Andere Tipps

Sie erhalten den inkompatiblen Typfehler, da MajorIntervallength a erwartet NSDecimal Und Sie erwidern eine NSDecimalNumber. Sehen Sie, ob dies für diese Fehler funktioniert:

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

Für die anderen schließen Sie irgendwo die Header -Dateien ein?

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

Ich denke, Sie bieten einen absoluten Weg. Wenn Sie die CorePlot -Dokumentation durchlaufen, werden Sie feststellen, dass sie deutlich erwähnt haben: "Sie sollten relativen Pfad im Feld Header -Suchpfad angeben."

Um zu lernen, was ein relativer Weg ist, folgen Sie "http://webdesign.about.com/od/begegningtutorials/a/aa040502a.htm"

Holen Sie sich den vollen Pfad des Core-Plot-Thru-Terminalbefehls "Mdfind" wie unten.

Im Terminaltyp mdfind -name coreplot

Wird den vollständigen Pfadnamen erhalten.

Nehmen Sie den vollständigen Pfad und setzen Sie in Headers -Suchpfad ein

Zusammen mit oben ... fügen Sie -objc zu "othetr linker flags" und fügen Sie Quartz -Frame hinzu "Link Binary with Bibliotheken".

Es wird klappen :)

Ich habe Folgendes gemacht:

1) #import "coreplot-cocoatouch.h" 2) hinzugefügt: UIViewController zur .h vc-Datei 3) fügte genau den gleichen Code aus CPEST APP 4 hinzu. Zieleinstellungen, legen Sie die Headersuche und einen anderen Link (Benutzer ..../Framework & -OBJC) in Projekteinstellungen ein, fügte das Quartzcore -Framework hinzu und wenn ich kompile, erhalte ich:

Importieren "coreplot-cocoatouch.h" keine solche Datei oder Verzeichnis ....

Ich verstehe nicht, warum es die Header -Dateien nicht findet ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top