私は以下をチェックしようとしていますが、すべてが範囲外エラーをスローします
if ([objects count] < 1)
if ([objects count] == 0)
if ([objects count] <= 0)
3つすべてが範囲外に投げられましたか?これを「if/else」ステートメントで使用するにはどうすればよいですか?NSArrayにゼロオブジェクトが含まれているかどうかを確認することはできませんか?
私は以下をチェックしようとしていますが、すべてが範囲外エラーをスローします
if ([objects count] < 1)
if ([objects count] == 0)
if ([objects count] <= 0)
3つすべてが範囲外に投げられましたか?これを「if/else」ステートメントで使用するにはどうすればよいですか?NSArrayにゼロオブジェクトが含まれているかどうかを確認することはできませんか?
ポインタを定義したばかりでobjects
インスタンスを初期化していない場合、非常に奇妙な動作が発生します。初心者のカカオ開発者として、私は少なくとも2回は次のようなものに火傷を負いました
NSMutableArray *objects;
...
if ( [objects count] == 0 )
{
.... // do something
}
たとえば、次のように初期化してもよろしいですか。
NSMutableArray *objects = [NSMutableArray array];
その場合は本当に機能するはずだからです!
配列内の要素にアクセスしようとしていないため、範囲外の例外が発生しないようにする必要があります。範囲外の例外は、objectAtIndex
配列を呼び出して不正なインデックスを指定した場合にのみスローされます。
一般に、nilまたは空の配列にアクセスしようとするのを防ぐために、私は通常次のようなことをします。
if(!objects || !objects.count) ...
このように、objects
存在しない場合はobjects.count
呼び出されません。
これらのコード行がそのようなエラーを引き起こす可能性はないと思います。
このコードは、どのアレイでも正しく機能します。範囲外の例外は、次のようなものを呼び出そうとしたことを意味します
[myArray objectAtIndex:0];
空の配列。または、言い換えると、配列の一部ではないオブジェクトにアクセスしようとしました。
これを試すこともできます。
if(![objects lastObject])
{
//... Do Something
}