我有一个很长的 if 语句来决定在UIImageView
. 它们都是.png文件,我使用代码:
if (whatever) {
image = [UIImage imageNamed: @"imageName.png"];
}
有谁知道检查程序是否可以找到图像的方法?这样如果程序中不存在图像,它可以显示错误图像或什么的?
我有一个很长的 if 语句来决定在UIImageView
. 它们都是.png文件,我使用代码:
if (whatever) {
image = [UIImage imageNamed: @"imageName.png"];
}
有谁知道检查程序是否可以找到图像的方法?这样如果程序中不存在图像,它可以显示错误图像或什么的?
+[UIImage imageNamed:]
nil
如果找不到相应的图像文件,将返回。所以只需检查一下:
UIImage *image = [UIImage imageNamed:@"foo.png"];
if (image == nil)
{
[self displayErrorMessage];
}
最短的片段是
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"]) ) {
...
}
但你在这里玩弄可读性。
首先,我建议使用字典而不是 long if
。您可以通过 键入每个图像名称whatever
。如果whatever
当前不是对象,则创建一个enum
封装该信息并使用NSNumber
s 将枚举值装箱的对象。
然后,您可以检查nil
何时尝试检索图像。imageNamed:
用于nil
指示失败,因此:
if( !image ){
// No image found
}