2016-04-26 20 views
0

Ich bin neu in Ziel C. Ich schreibe Code für eine Codierung Wettbewerb. Dafür schreibe ich Code in meine XCode IDE und lade den Code auf ihre Website hoch. Der Code, der in meinem Computer funktioniert, verursacht Compilerfehler auf der Website.Objective C Compiler Fehler

Für z.B. Eine einfache Zuweisung von Array-Elementen, die für mich in XCode funktioniert.

NSArray *itemArray; 
NSString *feet; 
feet = itemArray[0]; 

die obige Zeile erzeugt Fehler „inkompatible Typen bei der Zuordnung‚struct NSString *‘von Typ Typ‚struct NSArray‘“

I die folgende Syntax verwendet werden müssen, damit es funktioniert.

feet = [itemArray objectAtIndex:0]; 

Similey, die for-Schleife.

for (int i = 0; i <= count - 1; i++) { 
<#statements#> 
} 

Dies gibt den Fehler "für die erste Schleife Erklärungen sind nur in C99 oder C11-Modus erlaubt". Ich muss die folgende Änderung vornehmen, damit es funktioniert.

int i; 
for (i = 0; i <= count - 1; i++) { 
<#statements#> 
} 

Könnte jemand bitte beraten, wie konfiguriere ich meine XCode IDE, so dass ich den Code kompatibel mit dem Compiler in der Website schreiben kann? Offenbar

ist die unterstützte Version von Objective C auf der Website GCC 4.4.5 Ich mag möchte wissen, ob ich es in XCode konfigurieren

+0

überprüfen Sie bitte: http://stackoverflow.com/questions/24881/how-do-i-fix-for-loop-initial-declaration-used-outside-c99-mode-gcc-error –

+0

Hat Ihr Objective-C-Datei endet in .m? – gnasher729

+0

Dateiendung ist .m –

Antwort

0

An Ihrem ersten exemple, Sie Ihre Variablen nur deklarieren, aber Sie müssen eine Instanz für Ihr Array erstellen und es mit einigen Elementen füllen.

NSArray *itemArray = @[@"item1-String", @"item2-String"]; 
NSString *feet = itemArray[0]; 

Ansonsten versuchen, das erste Element des Arrays zu erhalten (mit itemArray[0] oder [itemArray objectAtIndex:0] in einer Ausgabe führen, da das Array nicht instanziiert wird.

Beachten Sie, dass, wenn Ihr Array tot durch dynamische gemeint ist (add/entfernen Elemente später), verwenden Sie einen NSMutableArray Typ

NSMutableArray *itemArray = [@[@"item1-String", @"item2-String"] mutablecopy]; 

Und wenn Sie, wie viele Elemente enthält Ihr Array weiß nicht, seine count überprüfen, bevor Sie versuchen Element zu erhalten:

NSString *feet; 
if (itemArray.count <= 3) { //Is there at least 3 elements? 
    feet = itemArray[2]; //then get third element 
} 
+0

Ich habe eine Menge Code aus meinem Post weggelassen, da ich nur das Problem hervorheben wollte. Ich will nur wissen, warum itemArray [0] Compilerfehler gibt. –

+0

Was ist dann der Typ des ersten Elements in Ihrem Array? – Niko

+0

Mein Array enthält Zeichenfolgen.Es wird initialisiert als NSArray * itemArray = @ [@ "A", @ "B", @ "C", @ "D"]; –