imageNamed non valido (e altri problemi con i resource files) dopo la creazione di un CocoaPod

imageNamed non valido (e altri problemi con i resource files) dopo la creazione di un CocoaPod

Qualche giorno fa ho scritto un articolo per illustrare l'integrazione della mia libreria DownPicker su CocoaPods. Come diretta conseguenza del refactoring effettuato per rendere il codice compatibile con i requirements del dependency manager più usato dagli sviluppatori XCode,  alcuni utilizzatori della libreria mi hanno immediatamente fatto notare che la nuova versione, se installata tramite CocoaPods, non visualizzava più le immagini integrate, nonostante fossero presenti nelle directory /Assets/ , quest'ultima regolarmente inclusa nelle wildcard presenti nel percorso indicato come resource_bundle nel file .podspec relativo al progetto.

Il problema era legato al fatto che il codice non conteneva alcun riferimento al bundle in questione, continuando a cercare l'immagine nella cartella principale del progetto: una pratica che funziona benissimo per un componente esterno inserito manualmente all'interno di un progetto XCode, ma sostanzialmente inadatta per un CocoaPod.

La soluzione è stata molto semplice, è bastato aggiungere un riferimento al bundle relativo al progetto sfruttando un overload aggiuntivo del metodo imageNamed:

Inutile dire che la medesima soluzione si adatta a qualsiasi altro tipo di asset o resource file non trovato. Nel caso in cui siate alle prese con un problema simile, adesso sapete come fare.

Felice sviluppo!

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.