Obj Cプログラミングの新機能ですので、最初から開始します NSNumberとNSString要素を持つ配列があります。NSString elemsをNSNumber elemsに置き換えます。私はこれを作るために、新しいNSMutableArrayのすべての要素値とNSMutableIndexSetのインデックスを取得することにしました。しかし、これを私が問題に直面したときに、ここでは、私は自分のコードとログを表示します。Objective-C:配列内のオブジェクトのインデックスを取得する
NSArray *oneMoreStack = [program copy];
NSLog(@" stack=%@",oneMoreStack);
NSLog(@" show me index ind=%@",[oneMoreStack indexOfObject:@"x"]);
NSMutableIndexSet *myVarIndexesSet;
NSMutableArray *myVarsArray;
for (id myVarConst in oneMoreStack) {
if([myVarConst isKindOfClass:[NSString class]])
{
if([myVarConst isEqualToString:@"x"]){
[myVarsArray addObject:myVarConst];
NSLog(@"obj x=%@",myVarConst);
[myVarIndexesSet addIndex:[oneMoreStack indexOfObject:myVarConst]];
NSLog(@"ind x=%@",[oneMoreStack indexOfObject:myVarConst]);
}
}
私はそれを実行する私は、このログの表示:
Calculator[6306:f803] stack=(
x,
2,
"+"
)
Calculator[6306:f803] show me index ind=(null)
Calculator[6306:f803] obj x=x
Calculator[6306:f803] ind x=(null)
then crash [NSMutableArray replaceObjectsAtIndexes:withObjects:]: index set cannot be nil
をだから、私の質問は、なぜない[oneMoreStack indexOfObject:myVarConst]
リターンnull
のですか?どうすれば修正できますか?ありがとう。 インデックスを取得する際に問題があるため、このコードについては言及していません。
コードの前の部分は、この部分をなった後:私は以前に言及し、エラーレポートでそのクラッシュ後
[stack replaceObjectsAtIndexes:[myVarIndexesSet copy] withObjects:[myVarsArray copy]];
。ありがとう。
なぜなら、ログのエラーメッセージが「キャッチされていない例外のためにアプリケーションを終了しています」という理由で、NSInvalidArgumentException '、reason:' * ** - [NSMutableArray replaceObjectsAtIndexes:withObjects:]:インデックスセットをnilにすることはできません。ありがとう。 –
申し訳ありませんが、私はクラッシュの言及を見ませんでした。あなたは、あなたが呼んだ場所、つまり[NSMutableArray removeObjectsAtIndexes:]、 - [NSMutableArray replaceObjectsAtIndexes:withObjects:]、または - [NSMutableArray insertObjects:atIndexes:]であなたの質問を更新できますか?ありがとう! – iccir
助けてくれてありがとう、私は質問を編集する –