在for循环中,
NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>];
每个索引位置应该有两个vars,我想访问其中一个。非常感谢。
编辑:在这种情况下,我正在尝试访问属性
答案 0 :(得分:3)
我们唯一一次将->
应用于Objective-C对象(self
除外)是我们想要从该对象的方法外部访问对象的实例变量。我们几乎从不想这样做。
无论如何,objectAtIndex:
方法的返回类型为id
。 id
没有公共实例变量。
如果您知道数组中的对象是特定类型的,并且您想直接访问这些对象的实例变量(通常强烈反对),则必须强制转换返回首先将值设为正确的类型。例如:
NSLog(@"%@", ((MyObject *)[myArray objectAtIndex:i])->_myInstanceVariable);
但通常情况下,使用访问器方法要好得多,通常不需要从id
转换为更具体的类型。
答案 1 :(得分:3)
创建临时局部变量要好得多。它将帮助您在不使用->
的情况下访问该属性,并使您的代码更清晰。
E.g。
TheObject *object = array[i]; //same as [array objectAtIndex:i]
NSLog(@"%@", object.property);
答案 2 :(得分:1)
使用文字语法更容易:
NSLog(@"%@", [someArray[i] someGetter]);
或者它是一个数组数组:
NSLog(@"%@", someArray[i][someIndex]);