首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查+[UIImage imageNamed:]是否找到镜像

检查+[UIImage imageNamed:]是否找到镜像
EN

Stack Overflow用户
提问于 2012-08-13 03:48:13
回答 3查看 2.4K关注 0票数 2

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

代码语言:javascript
复制
if (whatever) {
    image = [UIImage imageNamed: @"imageName.png"];
}

有没有人知道一种检查程序是否能找到图像的方法?所以如果图像在程序中不存在,它可以显示错误图像或其他什么吗?

EN

回答 3

Stack Overflow用户

发布于 2012-08-13 03:50:53

代码语言:javascript
复制
+[UIImage imageNamed:]

如果找不到相应的图像文件,将返回nil。所以只需要检查一下:

代码语言:javascript
复制
UIImage *image = [UIImage imageNamed:@"foo.png"];
if (image == nil)
{
    [self displayErrorMessage];
}
票数 7
EN

Stack Overflow用户

发布于 2012-08-13 03:52:32

最短的代码片段应该是

代码语言:javascript
复制
image = [UIImage imageNamed:@"imageName"] ? : [UIImage imageNamed:@"fallback_image"]

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

再做一次检查:

代码语言:javascript
复制
if (whatever) {
    image = [UIImage imageNamed: @"imageName.png"];
    if(image == nil) {
        image = [UIImage imageNamed: @"fallback_image"];
    }
}

它仍然可以被短路,就像

代码语言:javascript
复制
if(! (image = [UIImage imageNamed: @"imageName.png"]) ) {
    ...
}

但是您在这里玩弄了可读性。

票数 3
EN

Stack Overflow用户

发布于 2012-08-13 03:53:17

首先,我建议使用字典而不是长if。您可以通过whatever对每个镜像名称进行键控。如果whatever当前不是一个对象,那么创建一个将封装该信息的enum,并使用NSNumbers对枚举的值进行装箱。

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

代码语言:javascript
复制
if( !image ){
    // No image found
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11925360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档