2016-05-28 5 views
1

私はハングマンゲームを作ろうとしています。私の方法は、おそらく最も効率的ではないことに気づきます。基本的には、文字が入力されるたびに空白が残っているかどうかをチェックしているので、「あなたが勝った!」と表示できます。画像。私は2つのエラーが発生し続ける:受信機タイプエラーObj-C

Receiver type 'char' is not 'id' or interface pointer , consider casting it to 'id'

Thread 1: EXC_BAD_ACCESS (code=1, address=0x63)

何か助けが大歓迎です。

 BOOL dash = YES; 

     for(int j = 0; j < self.correctWord.length; j++){ 

      char temp = [self.correctWord characterAtIndex:j]; 

      if([temp isEqual:@"-"]) 
       dash = YES; 

     } 

     if(dash == YES) 
      self.hangmanImage.image = [UIImage imageNamed:@"wonimg"]; 

答えて

2

のObjective-Cとの事は、それが2頭の獣だです。

  1. メッセージを送信するオブジェクトがあります。
  2. ここにはメッセージはありません。演算子と関数呼び出しだけです。

のがエラーを調べてみましょう:

Receiver type 'char' is not 'id' or interface pointer , consider casting it to 'id'

"受信機" は、メッセージを受け取るものは何でもあります。

[receiver message] 

または

[receiver messageArgument1:arg1 argument2:arg2] 

idタイプは「任意のオブジェクト」ののObjective-Cの概念である:もはや正確で一般化を作成、メッセージは、角括弧のものです。

したがって、エラーは受信者がオブジェクトではないcharであると言います。これは普通のCタイプです。プレーンなCタイプ、==オペレータとテストの平等のために

if([temp isEqual:@"-"]) 

if (temp == '-') 
+0

その最後の行を除くすべて正しい... 'temp'があり、技術的にではなく、ここで問題とラインです7ビットASCII文字にする。私はより純粋なObjCソリューションに傾き、NSScannerを使用して文字列(または何か)の文字以外の文字を検出します。 – bbum

+1

はい、 'characterAtIndex:'は 'unichar'を' char'ではなく返します。もう1つの方法は、代わりに長さ1の部分文字列を取ることです。次に、オブジェクトであるNSStringを扱うことになります。 –