Ios 如何在索引[I]处访问数组的值,其中值是一个属性?
在for循环中Ios 如何在索引[I]处访问数组的值,其中值是一个属性?,ios,objective-c,Ios,Objective C,在for循环中 NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>]; NSLog(@“%@,[[objectAtIndex:i]->]; 每个索引位置应该有两个VAR,我想访问其中一个。非常感谢 编辑:在本例中,我尝试使用文字语法更轻松地访问属性: NSLog(@"%@", [someArray[i] someGetter]); 或者它是一个数组的数组: NSLog(@"%@", someArr
NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>];
NSLog(@“%@,[[objectAtIndex:i]->];
每个索引位置应该有两个VAR,我想访问其中一个。非常感谢
编辑:在本例中,我尝试使用文字语法更轻松地访问属性:
NSLog(@"%@", [someArray[i] someGetter]);
或者它是一个数组的数组:
NSLog(@"%@", someArray[i][someIndex]);
我们将
->
应用于Objective-C对象(除了self
)的唯一时间是当我们希望从对象上的方法外部访问对象的实例变量时。我们几乎从不希望这样做
无论如何,objectAtIndex:
方法的返回类型是id
。id
没有公共实例变量
如果知道数组中的对象属于特定类型,并且希望直接访问这些对象的实例变量(通常强烈反对),则必须首先将返回值转换为正确的类型。例如:
NSLog(@"%@", ((MyObject *)[myArray objectAtIndex:i])->_myInstanceVariable);
但一般来说,使用访问器方法要好得多,因为访问器方法通常不要求您从
id
转换为更具体的类型。创建临时局部变量要好得多。它将帮助您在不使用->
的情况下访问属性,并使代码更清晰
例如
提供更多上下文。显示如何声明变量/属性。显示循环。显示到目前为止您实际尝试的内容。是的,我还可以在调试器中看到整个数组具有正确的信息(所有条目)@rmaddy,在这种情况下,上下文是不相关的。在这种情况下…一个与NSLog语句相关的for循环,我如何访问该属性。此外,有3个有效的、完全有效的答案这一事实清楚地表明这些信息已经足够了。尽管如此,我将在将来尝试给出更多细节。问题w实际上是“如何访问属性”。接收器在数组中或在循环中访问的数组与此无关。即使它是数组数组,前两个示例仍然可以正常工作…它可能只是没有打印他想要打印的内容…@nhgrif我很喜欢文字语法。:-)id上的点语法?这不可能,我不介意。我的意思是,即使
someArray
的索引I
处的对象是一个数组,someArray[I]
仍然可以打印一些内容。第二个示例在@Zaph工作,谢谢。投了赞成票,一旦他们允许,我将接受这个答案。:)
TheObject *object = array[i]; //same as [array objectAtIndex:i]
NSLog(@"%@", object.property);