Загрузка ресурсов из другого пакета - PullRequest
3 голосов
/ 25 июня 2011

Если у меня есть пакет, содержащий класс и некоторые ресурсы, используемые этим классом. Если я загружаю класс из пакета, как я должен загрузить ресурсы (которые находятся в пакете, из которого я загружал класс) в этом классе?

Допустим, я хочу загрузить изображение внутри моего объекта, созданного из класса, загруженного из пакета. Если я сделаю

NSImage *image = [NSImage imageNamed:@"myImage"];

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

Ответы [ 3 ]

9 голосов
/ 03 сентября 2012

На OS X 10.7+ сделайте это:

NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @"com.company.otherapp"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @"imageName"];
3 голосов
/ 25 июня 2011

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

  1. Поиск объекта, имя которого было задано явно, с помощью метода setName: и который в настоящее время находится в кэше изображений.
  2. Поиск в главном приложениипакет для файла, имя которого соответствует указанной строке.(Для получения информации о том, как искать комплект, см. «Доступ к содержимому комплекта» в Руководстве по программированию комплекта.)
  3. Поиск в каркасе набора приложений для общего изображения с указанным именем.При поиске файлов в комплекте приложений лучше (но не обязательно) включать расширение имени файла в параметр имени. (ссылка)
0 голосов
/ 26 июня 2011

Вы можете использовать метод класса +bundleForClass: из NSBundle, чтобы получить ссылку на пакет для определенного класса.

Затем вы можете использовать ‑pathForImageResource: метод NSBundle, чтобы получить путь к изображению и создать NSImage с этим путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...