5

我是 iphone 的初学者,在我的代码中由于未捕获的异常“NSInvalidArgumentException”而出现终止应用程序的运行时错误,原因:“-[__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];

}

给出适用于我的代码的任何建议和源代码......

4

1 回答 1

11

当您尝试将字符串视为图像时会出现问题:

UIImage *img = [animal objectAtIndex:currentImage];

数组中的值animal不能是图像,因为数组来自使用该方法dict从文件中读取的字典。此方法将创建类型的对象。不在该方法可以创建的类型列表中,因此您的强制转换无效。dictionaryWithContentsOfFile:NSStringNSDataNSDateNSNumberNSArrayNSDictionaryUIImagedictionaryWithContentsOfFile:

从错误消息看来,您得到的是一个NSString而不是UIImage. 检查该字符串的值以查看它所代表的内容:它可能是 URL、文件名或可用于获取图像的某种其他形式的标识符。根据字符串中的内容,更改程序以加载img而不是基于字符串的值。也许代码应该是

UIImage *img = [UIImage imageNamed:[animal objectAtIndex:currentImage]];

但是如果不知道字符串的值,就不可能确定。

于 2012-07-07T10:48:22.833 回答