2012-03-15 2 views
0

에서 개체의 속성에 액세스하는 방법, 나는있는 NSMutableArray에 저장된 개체의 특성 '프레임'을 설정하려합니다. I 개체의 프레임을 설정하려고 할 때, 내 프로그램은 메시지 신호 'SIGABRT를'수신 '__ [NSCFNumber setFrame는 :] : 미정 선택기 인스턴스 0x6a8d960 보내.' 이 문제를 어떻게 해결할 수 있습니까? 내 프로그램에서, NSMutableArray를

찾는 INT (I = 0; i가 < [computerHand 카운트] 난 ++) computerHand의 {

CardView* card = [computerHand objectAtIndex:i]; 
    card.frame = CGRectMake(10+70*i, 340, 60, 85); 

}

선언 :

@property (유지) NSMutableArray * computerHand; computerHand

인구 NSLog 인쇄 '__NSCFNumber'콘솔에 참고 -

-(void) addCardToHand:(NSMutableArray *)hand 
{ 
    [hand addObject:[cards objectAtIndex:0]]; 
    NSLog(@"%@", [[cards objectAtIndex:0]class]); 
    [cards removeObjectAtIndex:0]; 
} 

. 갑판 인구

코드

-(void) createDeck : (UIView *)view 
{ 
    cards = [[NSMutableArray alloc]initWithCapacity:52]; 
    for (int i = 0; i <= 4; i++) 
    { 
     for(int j = 0; j <= 13; j++) 
     { 
      CardView* card = [[CardView alloc] initWithFrame:CGRectMake(view.center.x - 60/2, view.center.y - 85/2, 60, 85) value:j]; 
      [cards addObject:card]; 
      [view addSubview:card]; 
     } 
    } 
    for(int i =0; i<= 52; i++) 
    { 
     NSLog(@"%@", [cards objectAtIndex:i]); 
    } 
} 

참고 : NSLog 명령이 제대로 콘솔에 CardView 개체를 인쇄하지만, 다른 범위에서 액세스하려고 할 때 다음 __NSCFNumber가 인쇄됩니다. 도움을 주시면 감사하겠습니다.

+0

우리는 코드가 – Mark

+0

당신은의 NSNumber 인스턴스에 프레임 속성을 설정 한 모든 유효한 개체에 대한 귀하의 배열을 확인하려고하시기 바랍니다보고, 더 많은 코드는 문제를 해결하기 쉬운 것입니다 비트 수 있습니다. – iDroid

+0

@chiLLer, 어떻게해야합니까? – Fitzy

답변

1

문제는 당신이 당신의 배열에서 올바른 개체를 얻지 못하고있는 것입니다. 당신이 당신의 배열에서 당신의 CardView을 얻고, 콘솔에 대한 설명을 인쇄 직후 휴식 경우, 실제로 CardView 문자열이고 없습니다. 당신이해야 할 두 가지가 있습니다.

  1. 배열에 CardViews 만 추가해야합니다. 이것을 다시 확인하십시오. 루프 당신이 당신이 단지 CardViews에 프레임을 설정하고 있는지 확인하기 위해이 작업을 수행 할 수 있습니다에서
  2. :

    if([card isMemberOfClass:[CardView class]]) { 
        card.frame = CGRectMake(10+70*i, 340, 60, 85); 
    } 
    
당신은 아직도 당신이 실제로 만하지만 CardViews에 옮기고 있는지 확인하려면

, 그러나 이것은 디버그하는 방법입니다.