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