如何在索引[i]中访问数组的值 - 其中值是属性?

时间:2013-11-14 23:37:07

标签: ios objective-c

在for循环中,

NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>]; 

每个索引位置应该有两个vars,我想访问其中一个。非常感谢。

编辑:在这种情况下,我正在尝试访问属性

3 个答案:

答案 0 :(得分:3)

我们唯一一次将->应用于Objective-C对象(self除外)是我们想要从该对象的方法外部访问对象的实例变量。我们几乎从不想这样做。

无论如何,objectAtIndex:方法的返回类型为idid没有公共实例变量。

如果您知道数组中的对象是特定类型的,并且您想直接访问这些对象的实例变量(通常强烈反对),则必须强制转换返回首先将值设为正确的类型。例如:

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]);