2013-12-09 61 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