NSMutableArray里

时间:2009-11-03 14:12:24

标签: iphone cocoa cocoa-touch nsmutablearray

我有一个NSMutableArray:

NSMutableArray *temp = //get list from somewhere.

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

我想要做的是,我想首先检查指定索引处的对象是否存在。如果它存在而不是我想要获取该对象。类似的东西:

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

但是我在if语句中得到异常,说索引超出了绑定。

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

5 个答案:

答案 0 :(得分:13)

你不能在NSArray中拥有'空'插槽。如果[myArray count] == 2,即数组有两个元素,那么你肯定知道在索引0处有一个对象,在索引1处有一个对象。总是这样。

答案 1 :(得分:4)

首先使用计数方法检查长度。

if ([temp count] > indexIWantToFetch)
    id object = [temp objectAtIndex:indexIWantToFetch];

答案 2 :(得分: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];
}

答案 3 :(得分:0)

只需检查索引是&gt; = 0和&lt;计数

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

- (NSUInteger)count

int arrayEntryCount = [temp count];

答案 4 :(得分:-2)

首先,检查数组的长度 -

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

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

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

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

}