我有一个数组,其中包含字符串形式的图像名称,我想将其转换为图像数组,我得到了这个错误,我做错了什么?
'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];
答案 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。所以请阅读它以找到您的解决方案。