如何解决[__NSCFString _isResizable]的运行时错误:无法识别的选择器发送到实例?

时间:2012-07-07 10:29:10

标签: objective-c

我是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];

}

提供适用于我的代码的任何建议和源代码....

1 个答案:

答案 0 :(得分:11)

当您尝试将字符串视为图像时会发生此问题:

UIImage *img = [animal objectAtIndex:currentImage];

animal数组中的值不能是图像,因为数组来自使用dict方法从文件中读取的字典dictionaryWithContentsOfFile:This method will create objects of types NSString, NSData, NSDate, NSNumber, NSArray, or NSDictionaryUIImage不在dictionaryWithContentsOfFile:方法可以创建的类型列表中,因此您的广告投放无效。

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

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

但如果不知道字符串的值,就无法确定。