检查+ [UIImage imageNamed:]是否找到了图像

时间:2012-08-12 19:48:13

标签: objective-c cocoa-touch uiimage

我有一个很长的if语句来决定在UIImageView中显示什么图像。它们都是.png文件,我使用代码:

if (whatever) {
    image = [UIImage imageNamed: @"imageName.png"];
}

有谁知道检查程序是否可以找到图像的方法?那么如果程序中不存在图像,它可以显示错误图像吗?

3 个答案:

答案 0 :(得分:7)

+[UIImage imageNamed:]
如果找不到相应的图像文件,

将返回nil。所以请检查一下:

UIImage *image = [UIImage imageNamed:@"foo.png"];
if (image == nil)
{
    [self displayErrorMessage];
}

答案 1 :(得分:3)

最短的片段是

image = [UIImage imageNamed:@"imageName"] ? : [UIImage imageNamed:@"fallback_image"]

但你真的想要这样的代码吗?

再做一次检查:

if (whatever) {
    image = [UIImage imageNamed: @"imageName.png"];
    if(image == nil) {
        image = [UIImage imageNamed: @"fallback_image"];
    }
}

它仍然可以缩短,例如

if(! (image = [UIImage imageNamed: @"imageName.png"]) ) {
    ...
}

但你在这里玩弄可读性。

答案 2 :(得分:0)

首先,我建议使用字典而不是长if。您可以按whatever键入每个图像名称。如果whatever当前不是对象,请创建一个enum来封装该信息,并使用NSNumber s来设置枚举值。

然后,您可以在尝试检索图像时检查nilimageNamed:使用nil表示失败,因此:

if( !image ){
    // No image found
}