2011-08-12 22 views
2

インデックスとして別の配列の整数値を使用して配列にアクセスしようとしています。単純なNSIntegerとNSMutableArrayの質問

NSInteger index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter]; 
int i = index; 
questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"question"]; 

//where appDelegate.randomRiddlesCounter is an NSInteger and appDelegate.randomRiddles is a NSMutableArray 

しかし、互換性のないポインタがint変換警告になっています。上記のコードをどうすれば修正できますか?私が得る警告は、最初の行から来ています。

答えて

2

試してみてください。

NSNumber *index = [appDelegate.randomRiddles objectAtIndex: appDelegate.randomRiddlesCounter]; 
int i = [index intValue]; 
questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex: i] objectForKey: @"question"]; 

NSIntegerは整数型ではなく、オブジェクトです。

+0

@omz:ありがとうございました。

+0

実際、あなたは私を打ち負かす、私は答えと同じように書くつもりだった。 ;) – omz

+0

@omz:LOL!評判の競争はここでは殺人です。 <とても大きな笑みを浮かべて> –

0

これを試してみてください:

int i = [index intValue]; 
+0

しかし、最初の行にエラーが表示されています.2回目ではありません。 – Snowman

0

アンNSArrayの唯一のObjective-Cのオブジェクトポインタを格納できるオブジェクトのような(つまり、あなたがIDに割り当てることができるすべてのもの)あなたがindexOfObjectで、オブジェクトを取得objectAtIndexで

:(ID)anObjectあなたは、対応するインデックスを取得。

これら2つの命令は両方とも有効です。

id bla = [appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter]; 
NSInteger index = [appDelegate.randomRiddles indexOfObject:myObject]; 

目はmyObjectというは、id型 の少なくともだから、あなたはint型へのポインタを変換しようであることを前提としています。したがって、警告が発行されます。