0

我有一个 NSMutableArray:

NSMutableArray *temp = //get list from somewhere.

现在有一种方法 objectAtIndex 返回指定索引处的对象。

我想要做的是,我想首先检查指定索引处的对象是否存在。如果它存在,我想获取该对象。就像是:

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

但是我在 if 语句中遇到异常,说索引超出界限。

请任何人告诉我如何实现这一目标。

4

5 回答 5

13

NSArray 中不能有“空”插槽。如果 [myArray count]==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 并且 < 计数

返回当前在接收器中的对象数。

- (NSUInteger)count

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

首先你检查数组的长度 -

NSMutableArray *temp = //从某处获取列表。

现在检查-如果(临时长度){

你的 objectclass *obj = [temp objectAtIndex:indexnumber];

// indexnumber 是 0,1,2 ,3 或任何人...

}

于 2012-09-24T09:53:51.717 回答