2013-12-09 154 views
-3

所以我有一个问题如何做到以下几点: 我得到了一个带有对象的NSArray。更改NSArray内的属性

NSArray *array = [[NSArray alloc] initWithObjects:object1, object2, nil]; 

object1和object2是UIButton的子类。这个子类有一个BOOL属性(BOOL prop;),它工作正常。

object1.prop = YES; 
NSLog (@"What does the BOOL say? %@", object1.prop ? @"YES" : @"NO"); 

- >控制台输出YES。 Sothis工作正常,但我怎么能改变NSArray内的道具的价值?确实像[[array objectAtIndex:0] anf]; = YES;不会因为语法而起作用,但是我不知道语法如何去做。 如果有人帮助我,我很乐意! 在此先感谢。

+4

'[[array objectAtIndex:0] setProp:YES];' – 2013-12-09 15:39:10

回答

0

有许多相关的方法可以避免编译器警告。最简单的 '内联' 方法(假设你的UIButton的子类被称为myButton的):

((MyButton *) array[0]).prop = YES. 

或(使用旧的语法):

((MyButton *) [array objectAtIndex: 0]).prop = YES. 

MyButton *button = (MyButton *) array[0]; 
button.prop = YES. 
+0

在第三种情况下,不需要强制转换。 – 2013-12-09 15:43:35

+1

谢谢,((MyButton *)[array objectAtIndex:0])。prop = YES;是我寻找的。 – user3083408

0
[(YourSubclass *)[array objectAtIndex:0] setProp:YES]; 

一般来说,强制转换是可选的,因为NSArray保存了id类型的对象。但对于代码清晰度来说,它可能会对演员造成伤害,所以稍后你会看到你打算做的事情。

+0

演员不需要。 – 2013-12-09 15:43:42