我正在尝试创建一个NSMutableArray
,其中包含给定索引处的另一个内容。
如果前面的数组在索引处有任何内容,我正在使用initWithArray:
初始化新数组,否则使用普通init
此代码不起作用,但您应该可以从中获取想法:
NSMutableArray *typeCourseCutId;
if([self.typeCourseCut objectAtIndex:typeCourseIndex] != nil){
typeCourseCutId = [[NSMutableArray alloc]initWithArray:[self.typeCourseCut objectAtIndex:typeCourseIndex]];
} else {
typeCourseCutId = [[NSMutableArray alloc]init];
}
这种测试有解决方案吗?
答案 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);
}