Как узнать, существует ли изображение в комплекте? - PullRequest
5 голосов
/ 10 июня 2010

У меня есть массив NSString s:

Flower
Car
Tree
Cat
Shoe

С некоторыми из этих строк связаны изображения;некоторые нет.Я могу построить имя изображения, добавив .png к имени (например, Flower.png).

Как проверить, действительно ли это изображение существует в комплекте, прежде чем пытаться загрузить его в представление?

Ответы [ 4 ]

19 голосов
/ 10 июня 2010

Это также должно работать и немного короче:

if (flowerImage = [UIImage imageNamed:@"Flower.png"])
{
   ... // do something here
}
else
{   
   ... // image does not exist
}

Метод imageNamed: будет искать в вашем основном комплекте файл png.

6 голосов
/ 10 июня 2010

Просто загрузите ресурс и проверьте, является ли он nil или нет:

NSString* myImagePath = [[NSBundle mainBundle] pathForResource:@"MyImage" ofType:@"jpg"];
if (myImagePath != nil) {
    // Do something with image...
}
3 голосов
/ 08 июля 2014

Я бы назначил изображение в качестве переменной, затем вы можете проверить, существует ли изображение:

UIImage * flowerImage = [UIImage imageNamed:@"Flower.png"];

if (flowerImage) {
    // Do something
}
else {
    // Do something else
}

В принятом ответе мы проверяем, соответствует ли изображение изображению с определенным именем. Это может пойти не так, как мы вернемся нет, если

  • Изображение Flower.png не существует

И

  • Изображение Flower.png существует, но для flowerImage установлено другое изображение, означающее, что они не равны

Назначение переменной для изображения и последующая проверка, назначена ли переменная или нет, вернет нам определенное да или нет в зависимости от того, существует ли Flower.png

0 голосов
/ 13 ноября 2014

Я даже не добавляю ".png" к имени файла, и это работает:

NSArray *images = @[@"Flower", @"Car", @"Tree", @"Cat", @"Shoe"];

if ([UIImage imageNamed:images[0]]){
        // there is a flower image
    } else {
        // no flowers for you
    }
}
...