我有一个很长的if语句来决定在UIImageView
中显示什么图像。它们都是.png文件,我使用代码:
if (whatever) {
image = [UIImage imageNamed: @"imageName.png"];
}
有谁知道检查程序是否可以找到图像的方法?那么如果程序中不存在图像,它可以显示错误图像吗?
答案 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来设置枚举值。
然后,您可以在尝试检索图像时检查nil
。 imageNamed:
使用nil
表示失败,因此:
if( !image ){
// No image found
}