Swift NSBundle pathForResource() возвращает ноль

У меня есть изображения в моем проекте (который поддерживается только на iPhone, без iPad). Изображения находятся в группе, а не в images.xcassets.

Я хочу использовать одно и то же изображение для всех iPhone, кроме @3x для 6 Plus, поэтому у меня есть следующая структура:

  Project   
        |_ Images_Group
            |
            |_ [email protected]
            |_ [email protected]

Я использую этот код, чтобы использовать его в своем приложении:

if let path = NSBundle.mainBundle().pathForResource("pic01", ofType: "png") {
            image = UIImage(contentsOfFile: path)
        } 

Но path всегда возвращает ноль. Нужно ли мне иметь pic01.png?

Изображение находится в разделе Проект > Фазы сборки > Копировать ресурсы пакета. Что я делаю не так?


person rgamber    schedule 18.05.2015    source источник


Ответы (1)


Здесь вам нужен инструмент UIImage(named:), который будет искать изображения так, как вы предлагаете. pathForResource — это общая функция, не имеющая специальных правил для изображений. Он специально ищет pic01.png, которого не существует.

person Rob Napier    schedule 18.05.2015
comment
Я понимаю. Как-то я это пропустил. Я не хочу, чтобы изображение кэшировалось, поэтому я использовал pathForResource. Я думаю, что нет никакого способа обойти это. Спасибо за ответ! - person rgamber; 18.05.2015
comment
Просто из любопытства, не могли бы вы указать на документацию для разработчиков, где это изложено? - person rgamber; 18.05.2015
comment
comment
Если вы не хотите, чтобы он кэшировался, вам придется создать имя пути вручную, используя шкалу. Я не знаю ни одного метода, который вернет путь для конкретного масштаба (что немного удивительно, но, насколько мне известно, верно). - person Rob Napier; 18.05.2015