我有一个很长的if语句来决定在UIImageView中显示什么图像。它们都是.png文件,我使用下面的代码:
if (whatever) {
image = [UIImage imageNamed: @"imageName.png"];
}有没有人知道一种检查程序是否能找到图像的方法?所以如果图像在程序中不存在,它可以显示错误图像或其他什么吗?
发布于 2012-08-13 03:50:53
+[UIImage imageNamed:]如果找不到相应的图像文件,将返回nil。所以只需要检查一下:
UIImage *image = [UIImage imageNamed:@"foo.png"];
if (image == nil)
{
[self displayErrorMessage];
}发布于 2012-08-13 03:52:32
最短的代码片段应该是
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"]) ) {
...
}但是您在这里玩弄了可读性。
发布于 2012-08-13 03:53:17
首先,我建议使用字典而不是长if。您可以通过whatever对每个镜像名称进行键控。如果whatever当前不是一个对象,那么创建一个将封装该信息的enum,并使用NSNumbers对枚举的值进行装箱。
然后,您可以在尝试检索图像时检查nil。imageNamed:使用nil来指示失败,因此:
if( !image ){
// No image found
}https://stackoverflow.com/questions/11925360
复制相似问题