繁体   English   中英

目标C编译器错误

[英]Objective C Compiler Errors

我是目标C的新手。我正在为编程比赛编写代码。 为此,我正在XCode IDE中编写代码,然后将代码上传到他们的网站上。 我的机器上可以运行的代码在网站上提供了编译器错误。

例如,在XCode中对我有用的数组元素的简单分配。

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

上面的行生成错误“从类型“ struct NSArray”分配给类型“ struct NSString *”时不兼容的类型”

我必须使用以下语法使其起作用。

feet = [itemArray objectAtIndex:0];

相似,for循环。

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

这给出了错误“仅在C99或C11模式下允许for循环初始声明”。 我需要进行以下更改才能使其正常运行。

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

谁能建议我如何配置XCode IDE,以便可以在网站上编写与编译器兼容的代码?

显然,网站上受支持的Objective C版本是GCC 4.4.5,我想知道是否可以在XCode中对其进行配置

在第一个示例中,您只是声明了变量,但是您需要为数组创建一个实例并将其填充一些元素。

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

否则,尝试获取数组的第一个元素(使用itemArray[0][itemArray objectAtIndex:0]将导致问题,因为未实例化数组。

请注意,如果您的数组是动态添加的(稍后添加/删除元素),请使用NSMutableArray类型

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

而且,如果您不知道数组中包含多少个项目,请在尝试获取element之前检查其count

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM