Нужна небольшая помощь в загрузке изображения с абсолютным путем

У меня есть 400 изображений с повторяющимися именами, иерархически разделенными между папками, которые я включил в свой проект, теперь я хочу загружать изображения с абсолютным путем, я пытался использовать imagenamed, но вместо загрузки изображений отображается пустое поле. Теперь мне нужна небольшая помощь в том, как я могу показывать изображения, используя абсолютный путь.

Иерархия моего проекта

Project
     -> Project Files (i-e App Deligate and view controllers)
     -> Resources
            ->Images
                  ->1
                      ->1.jpg
                      ->2.jpg
                      ->3.jpg
                  ->2
                      ->1.jpg
                      ->2.jpg
                      ->3.jpg

Метод, который я использую для загрузки изображений

[self.leftImage setImage:[UIImage imageNamed:@"Images/1/1.jpg"] forState:UIControlStateNormal];

и так далее... Кто-нибудь, помогите. С Уважением


person X-Factor    schedule 12.03.2013    source источник
comment
Вы не можете использовать изображения с одинаковыми именами в проекте XCode. Потому что при создании сборки XCode создает одну папку (также известную как основной пакет) для хранения всех своих ресурсов. Это не относится к папкам, созданным вручную (например, 1, 2 в вашем примере). Таким образом, изображения с одинаковыми именами заменяются. Используйте отдельные имена для всех файлов изображений.   -  person Mrunal    schedule 12.03.2013
comment
@mrunal у меня 400 изображений, я не могу их все переименовать? Можете ли вы предложить мне решение для получения изображения с использованием абсолютного пути или что-то в этом роде?   -  person X-Factor    schedule 12.03.2013
comment
Извините, но это правило установлено самой Apple. Для лучшего способа загрузите какой-нибудь менеджер переименования файлов и переименуйте все эти файлы. В вашем коде вам может потребоваться изменить его самостоятельно.   -  person Mrunal    schedule 12.03.2013


Ответы (1)


Согласно вашим комментариям

Вам может помочь следующий метод

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)ext inDirectory:(NSString *)subpath;
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)ext inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName;

- (NSArray *)pathsForResourcesOfType:(NSString *)ext inDirectory:(NSString *)subpath;
- (NSArray *)pathsForResourcesOfType:(NSString *)ext inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName;

Вы можете попробовать этот код

NSString * sample=[[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"1"] ofType:@".jpg" inDirectory:@"foldername"];
[self.leftImage setImage:[UIImage imageWithContentsOfFile:sample] forState:UIControlStateNormal];

А также у вас не может быть 2 изображений с одинаковым именем. Вы получите предупреждение о повторяющихся символах при создании приложения.

Для эффективного использования памяти используйте тип pathforresource, а не изображение с именем UIImage, потому что оно будет иметь некоторую кэш-память на ViewControllers.

Надеюсь, поможет !!!

person Vishnu    schedule 12.03.2013
comment
я вообще не получаю никаких предупреждений, у меня разные папки, а не разные группы? - person X-Factor; 12.03.2013
comment
Желтый цвет, как я уже говорил, я использую папки, а не группы. - person X-Factor; 12.03.2013
comment
Что ж, я думаю, что мне следует изменить имена изображений в соответствии с рекомендациями Apple :) Кстати, спасибо за вашу помощь и время. С Уважением - person X-Factor; 12.03.2013
comment
@X-Factor stackoverflow.com/questions/1496373/ - person Vishnu; 12.03.2013
comment
Я выбираю это как ответ :) Спасибо - person X-Factor; 12.03.2013