NSArray から取得している文字列をリテラル文字列と正しく比較するにはどうすればよいですか? これまでのところ、1 つの方法で NSArray を 3 つの空白スペース " " で埋めました。現在、NSArray 内の 10 個のランダム インデックスを文字列 "C10" に置き換えようとしていますが、そこにあるものを置き換えたくありません。まだ " " でない限り。
ここでは、サイズ 100 の配列を作成し、各スポットを 3 つの空白スペースで埋めました。
-(void) initBoard{
_board = [board initWithCapacity: 100];
for(int i =0; i < 100; i++){
[_board addObject:@" "];
}
}
これは、等値比較で問題が発生している方法です。
-(void)makeChutes: (int) numOfChutes {
//Make argument number of Chutes randomly across the board.
for(int i = 0; i < numOfChutes || i>(-100);){
int random = arc4random_uniform(101);
if ([[_board objectAtIndex:random] isEqual:@" "]) {
NSString *fString = [NSString stringWithFormat:@"C%d", 10];
[_board replaceObjectAtIndex:random withObject:fString];
i++;//Only increments i if 3 blank spaces were at random index..
}
else{//Used to attempt to stop my accidental infinite loop.
i--;
NSLog(@"I, loop, ran %i times.", i);//Attempt failed:-(
}
}
}
上記のコードがめちゃくちゃであることは知っています。ループを停止するために、for 条件を満たさないたびに i をデクリメントし、|| を使用して for ループに OR 条件を追加し、100 サイクル後にループを停止しようとしました。何らかの理由で || i が -100 よりかなり南にある場合でも、条件によってループが停止されることはありません。
私の最初の質問は、インデックス「random」で配列に格納されている文字列を、3 つの空白のリテラル文字列と適切に比較するにはどうすればよいかということです。方法も試しましたisEqualToString
が、同じように機能しました。
次に、あまり重要ではありませんが、今は必要ないので、二重条件の for ループを適切にコーディングするにはどうすればよいでしょうか? i
for ループ構文を使用すると、Xcode からエラーや警告が表示されず、コンパイルして実行されるため、2 番目の条件を無視して、 isの間でも反復し続ける理由がよくわかりません< -100
。