访问对象内的属性以获取放映时间

时间:2013-08-07 17:37:55

标签: objective-c nsmutablearray

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

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

我知道要知道如何到达moviesArray的第一个对象并获得它的属性“showtimes”以便用它做点什么。

这就是我想要的: NSMutableArray *theShowtimes =[(Movie *)[[moviesArray] objectAtIndex:[o]] showtimes];

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

你能告诉我我做错了吗?

感谢

2 个答案:

答案 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变量处理,因为它们就是这样。