访问数组中对象的属性

时间:2015-05-21 23:51:05

标签: objective-c nsarray

我对编程很陌生,而且我有点陷入困境。现在,我的NSArray中的每个对象都有自己的属性,包含我需要的数据。我习惯于遍历一个数组来访问它的对象,但是从来没有迭代过一个并访问它的一些对象的属性。所以我完全迷失了。

通常当我需要遍历数组时,这是一个简单的过程,如:

For (int i =0; i <= self.array.count; i++) {
NSLog(@"%d", i):
}

够容易。但是,现在我面临的挑战是查看存储在数组索引中的所有顶层,并从该给定对象访问一条信息。我需要这样做和一个for循环,因为有多个对象。我相信我在本网站上所读到的内容,其背后的逻辑是正确的,但我不确定如何访问对象的属性而不仅仅是对象本身。

2 个答案:

答案 0 :(得分:2)

当你说:

for (int i = 0; i <= self.array.count; i++) {
    // ... inside the loop ...
}

...然后当你进入循环时,可以获得数组中的每个对象,每次迭代一次,为[self.array objectAtIndex:i]。所以取这个。 现在你有一个对象!

现在只需访问您喜欢的对象的任何属性。您可能希望强制转换到该对象的正确类型,以便编译器了解这是什么类型的对象,并允许您执行任何您想要的操作要做。

答案 1 :(得分:1)

使用fast enumeration而不是按索引进行迭代,然后照常访问该属性。

for( id obj in myArray ){    // Use a more specific type than id if possible
    NSLog(@"%@", [obj prop]);
}

另一种选择是使用Block-based enumeration。在那里,你将编写一个Block,其中一个参数是数组中的一个对象。 (对象按顺序显示在块中。)

[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * stop){
    NSLog(@"%@", [obj prop]);
}];

在这种情况下,如果由于某种原因需要,您也可以访问索引。如果您需要,请stop argument allows early termination of the loop