测试我的数组在给定索引处是否为零?

时间:2012-08-23 18:55:06

标签: objective-c cocoa nsarray

我正在尝试创建一个NSMutableArray,其中包含给定索引处的另一个内容。

如果前面的数组在索引处有任何内容,我正在使用initWithArray:初始化新数组,否则使用普通init

此代码不起作用,但您应该可以从中获取想法:

NSMutableArray *typeCourseCutId;
if([self.typeCourseCut objectAtIndex:typeCourseIndex] != nil){
    typeCourseCutId = [[NSMutableArray alloc]initWithArray:[self.typeCourseCut objectAtIndex:typeCourseIndex]];
} else {
    typeCourseCutId = [[NSMutableArray alloc]init];
}

这种测试有解决方案吗?

4 个答案:

答案 0 :(得分:6)

有一个名为NSNull的特殊类,专门用作集合中的空指示符:

  

NSNull类定义了一个单独的对象,用于表示集合对象中的null值(不允许nil值)。

if([self.typeCourseCut objectAtIndex:typeCourseIndex] != [NSNull null]) ...

答案 1 :(得分:3)

您可以检查数组的计数。如果计数大于您要提取的索引,则表示该索引处存在对象。

另外,请确保您的self.typeCourseCut是一组NSArray个对象,否则initWithArray:会崩溃。

此外,您可以将空对象添加到数组[yourArray addObject:[NSNull null]]; 最重要的是,如果没有索引1处的对象,则无法将对象添加到索引2。

答案 2 :(得分:2)

任何索引都不应该为数组。构建数组的方式是一旦到达nil对象。它被认为是数组的结尾。

您无法添加nil对象,也无法将现有对象更新为nil。

如果必须将某些内容设置为“Null”样式对象,则可以在其位置使用NSNull。这是大多数JSON解析器为他们想要显示的对象所做的事情,但是为空。

答案 3 :(得分:0)

如果这可以帮助

   if([array objectAtIndex:0] != [NSNull null])
    {
       NSLog(@"INDEX 0);
    }
    else if([array objectAtIndex:1] != [NSNull null])
    {
         NSLog(@"INDEX 1);
    }
    else if([array objectAtIndex:2] != [NSNull null])
    {
         NSLog(@"INDEX 2);
    }