Objective c 为showtimes访问对象内的属性

Objective c 为showtimes访问对象内的属性,objective-c,nsmutablearray,Objective C,Nsmutablearray,我创建了一个名为“Movie”的对象类,其中包含一个名为“showtimes”的属性,该属性的类型为NSMutableArray 现在我有了另一个名为“LocalShowtimes”的类,它包含一个名为moviesArray的属性,该属性的类型为NSMutableArray,其中填充了类型为“Movie”的对象 我知道,我正试图找到moviesArray的第一个对象,并获取其属性“showtimes”,以便对其进行处理 这就是我正在尝试的: NSMutableArray*显示时间=[(电影*)

我创建了一个名为“Movie”的对象类,其中包含一个名为“showtimes”的属性,该属性的类型为NSMutableArray

现在我有了另一个名为“LocalShowtimes”的类,它包含一个名为moviesArray的属性,该属性的类型为NSMutableArray,其中填充了类型为“Movie”的对象

我知道,我正试图找到moviesArray的第一个对象,并获取其属性“showtimes”,以便对其进行处理

这就是我正在尝试的:

NSMutableArray*显示时间=[(电影*)[[moviesArray]对象索引:[o]]显示时间];

但编译器正在抱怨“预期标识符”

你能告诉我我做错了什么吗


谢谢

您应该使用
对象索引:
或索引器:

// Like this - the old syntax
NSMutableArray *theShowtimes =[[moviesArray objectAtIndex:o] showtimes]; 

// Or like this - the new syntax
NSMutableArray *theShowtimes =[moviesArray[o] showtimes]; 

dasblinkenlight为您的问题提供了解决方案,但只是为您的字面问题添加了一个答案(“我做错了什么?”):

Objective-C中的方括号表示传递给对象的消息。最简单的形式如下所示:

[myObject importantMessage]
在您的代码中有以下内容:

[[moviesArray] objectAtIndex:[o]]
这意味着编译器认为您想向对象
moviesArray
发送消息,但实际上您没有发送任何消息。编译器试图通过使用表达式“expected identifier”告诉您这一点

它期望的标识符是您显然想要发送给对象的消息的名称

现在,在您的例子中,您并不真正想要发送任何消息,因为
moviesArray
本身就是一个非常好的数组,但是编译器不知道这一点

因此,正如dasblinkenlight所示,您所要做的就是删除对象周围多余的方括号,这样编译器就不会认为您试图向它发送消息

同样的逻辑也适用于
[o]
,更复杂的是
o
不是一个对象-它是(或应该是)一个简单的整数。整数(和浮点、双精度等)被称为基本类型,应该作为普通C变量处理,因为它们就是这样