UIImage imageNamed: no encuentra la image dentro de la carpeta azul referenceda Xcode

En mi proyecto Xcode tengo una carpeta de reference azul que apunta a una carpeta con imágenes.

El beneficio de la carpeta azul es que no tengo que agregar manualmente los files a Xcode. Entonces, cuando agrego una nueva image a la carpeta, se muestra automáticamente en Xcode, sin embargo, cuando trato de hacer reference al file desde el código usando

[UIImage imageNamed:@"myFileFromTheBlueFolder"]; 

no encuentra la image, aunque la carpeta de nivel superior se agrega al destino. 🙁

¿Tengo que hacer reference a la image de manera diferente cuando vengo de una carpeta azul, que en mi humilde opinión derrota el propósito de tener una carpeta de ese tipo?

Me imagino que el problema es que la "carpeta azul" (por ejemplo, la reference de la carpeta, en lugar de un grupo) se está copyndo literalmente en sus resources de la aplicación. En otras palabras, no está siendo aplanado como suelen ser los resources. Si revisa su producto incorporado, al lado de todos sus resources normales, probablemente verá la carpeta en sí, y todo lo que estaba en la carpeta todavía está en la carpeta.

Como tal, +[UIImage imageNamed:] no puede encontrar la image porque no recursa en subdirectorys. Puede usar -[NSBundle pathForResource:ofType:inDirectory:] para get una ruta al recurso y pasarla a +[UIImage imageWithContentsOfFile:] , pero descarta las optimizaciones de memory que +imageNamed: tiene (por ejemplo, donde almacena en caching las imágenes utilizadas y deja imágenes sin usar).

Alternativamente, puede dejar de usar una reference de carpeta. O puede eliminar la reference de carpeta de la fase de compilation de resources y agregar una fase de compilation de script de shell que copie su contenido en su producto incorporado.

Kevin tiene razón sobre las optimizaciones de memory que proporciona +[UIImage imageNamed:] , pero es absolutamente posible acceder a las imágenes en las carpetas azules (references de carpetas). Todo lo que tiene que hacer es agregar el nombre de la carpeta en el nombre de la image. Por ejemplo:

Sus resources están organizados de la siguiente manera:

 Icons (blue folder / folder reference) |__camera.png |__checkmark.png Shanetworking (yellow folder / xcode group) |__back.png |__logo.png 

Puede acceder a las imágenes como esta:

 [UIImage imageNamed:@"Icons/camera"]; [UIImage imageNamed:@"Icons/checkmark"]; [UIImage imageNamed:@"back"]; [UIImage imageNamed:@"logo"]; 

Escribe el nombre completo de la image.

 [UIImage imageNamed:@"myFileFromTheBlueFolder.png"]; 

También tenga en count los nombres insensibles a mayúsculas y minúsculas.