0

私は NSMutableArray を持っています:

NSMutableArray *temp = //get list from somewhere.

現在、指定されたインデックスでオブジェクトを返すメソッド objectAtIndex が 1 つあります。

私がやりたいことは、最初に指定されたインデックスにオブジェクトが存在するかどうかを確認したいということです。それが存在する場合は、そのオブジェクトを取得したいと思います。何かのようなもの:

if ([temp objectAtIndex:2] != nil)
{
     //fetch the object
}

しかし、インデックスが境界を超えているという if ステートメントで例外が発生します。

これを達成する方法を誰か教えてください。

4

5 に答える 5

13

NSArray に「空の」スロットを持つことはできません。[myArray count]==2 の場合、つまり配列に 2 つの要素がある場合、インデックス 0 にオブジェクトがあり、インデックス 1 にオブジェクトがあることが確実にわかります。これは常に当てはまります。

于 2009-11-03T14:15:38.760 に答える
4

最初に count メソッドを使用して長さを確認します。

if ([temp count] > indexIWantToFetch)
    id object = [temp objectAtIndex:indexIWantToFetch];
于 2009-11-03T14:16:33.680 に答える
2

あなたはこのようにすることができます:

初期化するときは、次のようにします。

NSMutableArray *YourObjectArray = [[NSMutableArray alloc] init];
for(int index = 0; index < desiredLength; index++)
{
   [YourObjectArray addObject:[NSNull null]];
}

次に、追加したいが既に存在するかどうかを確認する場合は、次のようにします。

YourObject *object = [YourObjectArray objectAtIndex:index];
if ((NSNull *) object == [NSNull null]) 
{
    /// TODO get your object here..

    [YourObjectArray replaceObjectAtIndex:index withObject:object];
}
于 2009-11-03T14:29:48.547 に答える
0

インデックスが >= 0 かつ < count であることを確認するだけです

現在受信側にあるオブジェクトの数を返します。

- (NSUInteger)count

int arrayEntryCount = [temp count];
于 2009-11-03T14:16:44.617 に答える
-2

まず、配列の長さを確認します-

NSMutableArray *temp = //どこかからリストを取得します。

今チェック- if(temp length) {

あなたの objectclass *obj = [temp objectAtIndex:indexnumber];

// indexnumber は 0、1、2、3 またはその他...

}

于 2012-09-24T09:53:51.717 に答える