-1

在 for 循环中,

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

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

编辑:在这种情况下,我试图访问一个属性

4

3 回答 3

3

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

无论如何,该objectAtIndex:方法的返回类型是id. Anid没有公共实例变量。

如果您知道数组中的对象属于特定类型,并且您想直接访问这些对象的实例变量(这通常是不受欢迎的),您必须首先将返回值转换为正确的类型。例子:

NSLog(@"%@", ((MyObject *)[myArray objectAtIndex:i])->_myInstanceVariable);

但通常你最好使用访问器方法,这通常不需要你转换id为更具体的类型。

于 2013-11-14T23:46:11.477 回答
3

你最好创建一个临时局部变量。它将帮助您在不使用的情况下访问该属性->并使您的代码更清晰。

例如

TheObject *object = array[i]; //same as [array objectAtIndex:i]
NSLog(@"%@", object.property);
于 2013-11-14T23:52:51.237 回答
1

使用文字语法更容易:

NSLog(@"%@", [someArray[i] someGetter]);

或者它是一个数组数组:

NSLog(@"%@", someArray[i][someIndex]);
于 2013-11-14T23:43:41.413 回答