2016-04-26 152 views
0

我是新來的目標C.我正在編寫編碼競爭的代碼。爲此,我在我的XCode IDE中編寫代碼,並將代碼上傳到他們的網站上。在我的機器上運行的代碼會在網站上給編譯器帶來錯誤。Objective C編譯器錯誤

例如, 在XCode中爲我工作的數組元素的簡單賦值。

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

上面一行「分配時鍵入‘結構的NSString *’從類型‘結構NSArray的’不兼容類型」

我必須使用以下語法,使其工作產生誤差。

feet = [itemArray objectAtIndex:0]; 

相似,for循環。

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

這給出了錯誤「for循環初始聲明只允許在C99或C11模式」。我需要進行以下更改才能使其正常工作。

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

任何人都可以請指教如何配置我的XCode IDE,以便我可以在網站上編寫與編譯器兼容的代碼?

顯然,該網站上的目標C的支持的版本是4.4.5 GCC我想知道我是否能在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

配置它關於你的第爲例,你只是聲明你的變量,但你需要爲你的數組創建一個實例並用一些元素填充它。

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

否則試圖讓數組的第一個元素(itemArray[0][itemArray objectAtIndex:0]將導致一個問題,因爲該數組沒有實例化。

需要注意的是,如果你的陣列是由動態意味着TOT(添加/刪除元素後),使用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」]; –