'NSInvalidArgumentException',原因:'*** - [__ NSArrayM insertObject:atIndex:]:对象不能为nil'

时间:2012-10-25 08:34:14

标签: ios uiimage nsmutablearray

我有一个数组,其中包含字符串形式的图像名称,我想将其转换为图像数组,我得到了这个错误,我做错了什么?

 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

我的代码:

NSString * immagini = self.chinaTable.images; //unique string

NSArray * arrayImages = [immagini componentsSeparatedByString:@";"]; 
NSLog(@"The images: %@", arrayImages);// here are strings

/*The images: (
"ArchUrb_PortaGenova1.jpg",
"ArchUrb_PortaGenova2.jpg",
"ArchUrb_PortaGenova3.jpg",
"ArchUrb_PortaGenova4.jpg"
)*/

NSMutableArray * mutableImages =[[NSMutableArray alloc]initWithCapacity:20];

for (id obj in arrayImages){

/*The images: (
"ArchUrb_PortaGenova1.jpg",
"ArchUrb_PortaGenova2.jpg",
"ArchUrb_PortaGenova3.jpg",
"ArchUrb_PortaGenova4.jpg"
)*/


 [mutableImages addObject:[UIImage imageNamed:obj]];//here comes the error
  NSLog(@"The array mutable is è %@", mutableImages);
}
NSLog(@"The array of images %@", mutableImages);

self.viewImages.animationImages = [NSArray arrayWithArray:mutableImages];

self.viewImages.animationDuration =3;
self.viewImages.animationRepeatCount= 0;
[self.viewImages startAnimating];

3 个答案:

答案 0 :(得分:3)

[UIImage imageNamed:]如果无法在您的应用套装中找到所请求的图片,则会返回nil

将缺少的图像添加到项目中,或在将图像添加到数组之前添加if,如下所示:

for (id obj in arrayImages){
    UIImage *image = [UIImage imageNamed:obj];
    if (image != nil)
    {
        [mutableImages addObject:image];
    }
    NSLog(@"The array mutable is è %@", mutableImages);
}

答案 1 :(得分:0)

按如下所示更改您的代码段

for (id obj in arrayImages){

    UIImage *image  = [UIImage imageNamed:obj];
    if ( image ) {
       [mutableImages addObject:image];
       NSLog(@"The array mutable is è %@", mutableImages);
    }
}

答案 2 :(得分:0)

此问题与问题有关:Exception with insertObject:atIndex: on iOS6。所以请阅读它以找到您的解决方案。