2013-12-09 2 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"); 

-> 콘솔 출력 예. Sothis는 모두 정상적으로 작동하지만 NSArray 내에서 prop의 값을 어떻게 변경할 수 있습니까? 확실히 [[array objectAtIndex : 0] anf]; = 예; 구문 때문에 작동하지 않습니다,하지만 난 정말 그것을 어떻게 구문을 모르겠어요. 아무도 나를 도와 주면 좋겠다! 미리 감사드립니다.

+4

'[[array objectAtIndex : 0] setProp : YES]; ' –

답변

0

컴파일러 경고를 피하기 위해 여러 가지 관련 방법이 있습니다. 간단한 '인라인'방식은 (있는 UIButton의 하위 클래스는 MyButton에라는 가정)된다

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

또는 (오래된 구문을 사용하여) :

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

또는

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

세 번째 경우에는 캐스트가 필요하지 않습니다. –

+1

고맙습니다. ((MyButton *) [array objectAtIndex : 0]). prop = YES; 내가 찾은 것이 었어. – user3083408

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

을 일반적으로 NSArray는 id 유형의 객체를 보유하므로 캐스트는 선택 사항입니다. 그러나 코드 명확성을 위해 전송에 해를 끼칠 수 있으므로 나중에 수행 할 의도가 무엇인지 나중에 알 수 있습니다.

+0

캐스트가 필요하지 않습니다. –

관련 문제