2016-04-26 4 views
0

Я новичок в объекте C. Я пишу код для соревнований по кодированию. Для этого я пишу код в своей XCode IDE и загружаю код на их сайт. Код, который работает на моем компьютере, дает ошибки компилятора на веб-сайте.Ошибка компилятора Objective C

См., Например, Простое назначение элемента массива, который работает для меня в XCode.

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

выше линии генерирует ошибки «несовместимые типы при назначении типа„структура NSString *“от типа 'STRUCT NSArray»

я должен использовать следующий синтаксис, чтобы сделать его работу.

feet = [itemArray objectAtIndex:0]; 

Similary, for loop.

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

Это дает ошибку «для начальных объявлений цикла допускается только в режиме C99 или C11». Мне нужно внести следующие изменения, чтобы заставить его работать.

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

Может кто-нибудь, пожалуйста, посоветуйте, как мне настроить мой XCode IDE, так что я могу написать код, совместимый с компилятором на сайте?

По-видимому, поддерживается версия Objective C на сайте, GCC 4.4.5 Я хотел бы знать, могу ли я настроить его в XCode

+0

пожалуйста, проверьте: http://stackoverflow.com/questions/24881/how-do-i-fix-for-loop-initial-declaration-used-outside-c99-mode-gcc-error –

+0

ли ваш Objective-C файл заканчивается на .m? – gnasher729

+0

Расширение файла .m –

ответ

0

На вашем первом Exemple, вы только объявить переменные, но вам нужно создать экземпляр для вашего массива и заполнить его некоторыми элементами.

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

В противном случае пытается получить первый элемент массива (с itemArray[0] или [itemArray objectAtIndex:0] приведет к проблеме, так как массив не инстанциирован.

Обратите внимание, что если массив предназначен карапуз с помощью динамических (добавить/удалить элементы позже), используйте NSMutableArray тип

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

И если вы не знаете, сколько элементов содержит ваш массив, проверить его count, прежде чем пытаться получить элемент:

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

Я оставил много кода с моего поста, так как просто хотел подчеркнуть проблему. Я просто хочу знать, почему itemArray [0] дает ошибку компилятора. –

+0

Что это за тип первого элемента в вашем массиве? – Niko

+0

Мой массив содержит строки.Он инициализируется как NSArray * itemArray = @ [@ "A", @ "B", @ "C", @ "D"]; –

Смежные вопросы