2012-03-15 17 views
0

私のプログラムでは、NSMutableArrayに格納されているオブジェクトの 'frame'プロパティを設定しようとしています。オブジェクトのフレームを設定しようとすると、私のプログラムは '__ [NSCFNumber setFrame:]:インスタンス0x6a8d960に送られたセレクタを認識できませんでした。'というメッセージで 'SIGABRT'というシグナルを受け取ります。これをどうやって解決するのですか? NSMutableArrayからオブジェクトのプロパティにアクセスする方法

がため(INT i = 0; iは< [computerHandカウント]; iは++)computerHandの {

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

}

宣言:

@property(保持)NSMutableArray * computerHand;

コンソールへのNSLogプリント '__NSCFNumber' ノート・computerHand

-(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ではありません。あなたがする必要があることは2つあります。

  1. アレイにCardViewを追加することを確認してください。これをもう一度チェックしてください。あなたのあなたが唯一CardViewsにフレームを設定していることを確認するためにこれを行うことができますforループで
  2. if([card isMemberOfClass:[CardView class]]) { 
        card.frame = CGRectMake(10+70*i, 340, 60, 85); 
    } 
    

あなたはまだあなたが実際にだけしかしCardViewsに入れていることを確認するには、これはデバッグの方法です。

関連する問題