0

私は以下をチェックしようとしていますが、すべてが範囲外エラーをスローします

if ([objects count] < 1)
if ([objects count] == 0)
if ([objects count] <= 0)

3つすべてが範囲外に投げられましたか?これを「if/else」ステートメントで使用するにはどうすればよいですか?NSArrayにゼロオブジェクトが含まれているかどうかを確認することはできませんか?

4

4 に答える 4

3

ポインタを定義したばかりでobjectsインスタンスを初期化していない場合、非常に奇妙な動作が発生します。初心者のカカオ開発者として、私は少なくとも2回は次のようなものに火傷を負いました

NSMutableArray *objects;
...
if ( [objects count] == 0 )
{
    .... // do something 
}

たとえば、次のように初期化してもよろしいですか。

NSMutableArray *objects = [NSMutableArray array];

その場合は本当に機能するはずだからです!

于 2012-06-13T21:27:17.727 に答える
0

配列内の要素にアクセスしようとしていないため、範囲外の例外が発生しないようにする必要があります。範囲外の例外は、objectAtIndex配列を呼び出して不正なインデックスを指定した場合にのみスローされます。

一般に、nilまたは空の配列にアクセスしようとするのを防ぐために、私は通常次のようなことをします。

if(!objects || !objects.count) ...

このように、objects存在しない場合はobjects.count呼び出されません。

于 2012-06-13T21:51:09.360 に答える
0

これらのコード行がそのようなエラーを引き起こす可能性はないと思います。

このコードは、どのアレイでも正しく機能します。範囲外の例外は、次のようなものを呼び出そうとしたことを意味します

[myArray objectAtIndex:0];

空の配列。または、言い換えると、配列の一部ではないオブジェクトにアクセスしようとしました。

于 2012-06-13T21:18:51.067 に答える
0

これを試すこともできます。

if(![objects lastObject])
{
    //... Do Something
}
于 2012-06-14T05:41:29.373 に答える