我是iphone的初学者,在我的代码中由于未捕获的异常'NSInvalidArgumentException'而导致终止app的运行时错误,原因:' - [__ NSCFString _isResizable]:无法识别的选择器发送到实例0x6e6e300'
我的代码是
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *path=[[NSBundle mainBundle] pathForResource:@"Animalfile" ofType:@"plist"];
NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:path];
NSArray *animal=[dict valueForKey:@"image"];
NSLog(@"print:%@",dict);
NSLog(@"hello:%@",animal);
UIImage *img=[animal objectAtIndex:currentImage];
[animalphoto setImage:img];
}
提供适用于我的代码的任何建议和源代码....
答案 0 :(得分:11)
当您尝试将字符串视为图像时会发生此问题:
UIImage *img = [animal objectAtIndex:currentImage];
animal
数组中的值不能是图像,因为数组来自使用dict
方法从文件中读取的字典dictionaryWithContentsOfFile:
。 This method will create objects of types NSString
, NSData
, NSDate
, NSNumber
, NSArray
, or NSDictionary
。 UIImage
不在dictionaryWithContentsOfFile:
方法可以创建的类型列表中,因此您的广告投放无效。
从错误消息中可以看出您收到NSString
而不是UIImage
。检查该字符串的值以查看它所代表的内容:它可能是URL,文件名或可用于获取图像的其他形式的标识符。根据字符串中的内容,将程序更改为加载img
,而不是基于字符串的值。也许代码应该是
UIImage *img = [UIImage imageNamed:[animal objectAtIndex:currentImage]];
但如果不知道字符串的值,就无法确定。