我创建了一个名为“Movie”的对象类,它包含一个名为“showtimes”的属性,类型为NSMutableArray。
现在我有另一个叫做“LocalShowtimes”的类,它包含一个名为moviesArray的属性NSMutableArray,它填充了“Movie”类型的对象
我知道要知道如何到达moviesArray的第一个对象并获得它的属性“showtimes”以便用它做点什么。
这就是我想要的:
NSMutableArray *theShowtimes =[(Movie *)[[moviesArray] objectAtIndex:[o]] showtimes];
但编译器抱怨“预期标识符”
你能告诉我我做错了吗?感谢
答案 0 :(得分:2)
您应该使用objectAtIndex:
或索引器:
// Like this - the old syntax
NSMutableArray *theShowtimes =[[moviesArray objectAtIndex:o] showtimes];
// Or like this - the new syntax
NSMutableArray *theShowtimes =[moviesArray[o] showtimes];
答案 1 :(得分:0)
dasblinkenlight为您的问题提供了解决方案,但只是为您的文字问题添加答案(“......我做错了什么?”):
Objective-C中的方括号表示传递给对象的消息。以最简单的形式,它看起来像这样:
[myObject importantMessage]
在你的代码中你有这个:
[[moviesArray] objectAtIndex:[o]]
这意味着编译器认为您要向对象moviesArray
发送消息,但实际上并不发送任何消息。编译器尝试通过使用表达式“期望标识符”来告诉您。
它所期望的标识符是您显然想要发送给对象的消息的名称。
现在,在你的情况下,你真的不想发送任何消息,因为moviesArray
本身就是一个完美的数组,但是编译器不知道。
因此,正如dasblinkenlight所示,您所要做的就是删除对象周围多余的方括号,因此编译器不会认为您尝试向其发送消息。
同样的逻辑适用于[o]
,并且o
不是对象的附加复杂性 - 它是(或应该是)一个简单的整数。整数(和浮点数,双精度等)被称为原始类型,应该只作为普通的C变量处理,因为它们就是这样。