Ready to review.

I've tried to explain most of the code in the code.

I think that it covers more or less all requirements, But due to the lack of time, may be I've taken some "licenses".

TODO list:
- Better error handling
- Use pagination from the API to load more pictures.

Thanks for your time.

Perdona, pero la celda (RNKPictureCollectionViewCell) es totalmente independiente del modelo de datos (Photo). Por eso se ha creado la extension (categoría) del objeto para el renderizado, de esa forma es totalmente reutilizable y no se rompe el patron MVC.

También se podría haber realizado el completado de la celda en el VC, pero me parece mas limpio hacerlo en una categoría para este caso tan simple.

Otra manera de hacerlo seria, por ejemplo, mediante un cellController que realizase el mapeo entre entre el modelo y con controladores de las celdas (sus drawers). Seria una factoría, inyectable al collectionVC que mediante introspección se encargase de obtener el drawer adecuado para cada celda. Esta factoría seria ademas fácilmente mockeable. Esta es la solución que mas me gusta, pero para soluciones algo mas complejas que esta demo.

Otra opción es usar el patron strategy, aunque he de reconocer que no lo he llegado a implementar nunca:

http://www.migueldiazrubio.com/2014/07/10/desarrollo-ios-utilizar-el-patron-strategy-para-dibujar-diferentes-celdas-en-una-uitableview/