¿Puedo acceder a un directory xcassets en el sistema de files?

Me gustaría cargar dinámicamente todas las imágenes en un directory xcassets. Los files se llaman StockPhoto # donde # es el número en la list. Si puedo acceder a mis StockPhotos.xcassets en time de ejecución para contar todos los files en el directory, no tendré que cargar manualmente los files cada vez que agrego nuevas fotos.

Si hay otras soluciones a este problema, estoy abierto a eso, pero también tengo mucha curiosidad sobre cómo manejan xcassets el sistema de files, ya sea que sean solo reference a un set de files o, en realidad, a su propio directory. La información sobre esto es escasa.

Si hay otras soluciones a este problema, estoy abierto a eso

El problema es que no hay introspección en el time de ejecución en un catálogo de activos: no es una "cosa" que pueda "ver" en lo que respecta a Objective-C y Cocoa Touch.

La solución habitual a este tipo de problema es arrastrar una carpeta llena de imágenes a su proyecto desde el principio, y cuando lo haga, elija "Crear references de carpeta para cualquier carpeta agregada" en el cuadro de dialog, no "Crear grupos para cualquier carpeta agregada". " El resultado es que la carpeta se copy en su package de aplicaciones y ahora puede usar los methods ordinarios del sistema de files para decir "cada file en esta carpeta".

Tras la compilation de su proyecto iOS, xcassets comstackdores se comstackn para producir files de image o un file .car propietario. En este último caso, las imágenes no se almacenarán en un directory que pueda explorar.

Si su "Objetivo de deployment" es menor que iOS7 (lo que significa que su aplicación aún podría ejecutarse en iOS6)

  • Producirá el mismo set de files de image que habría tenido que producir sin utilizar el catálogo de activos, a saber <YourImageName>.png , <YourImageName>@2x.png , <YourImageName>~ipad.png , <YourImageName>~ipad@2x.png etc., para cada set de imágenes de tus xcasassets.

Si su "Objetivo de deployment" es iOS7 o superior (lo que significa que su aplicación solo podría ejecutarse en iOS7 +)

  • Producirá un solo file .car grande en el package final (realmente no busqué si este file era en realidad una database sqlite3 o algún formatting propietario o cualquier otra cosa, pero a quién le importa, se supone que no debes manipularlo de todos modos). Este gran file .car contiene todas las imágenes, con todas sus variantes proporcionadas, e incluso con información de corte (si cortó algunas para embaldosar o para usarlas como imágenes de 9 parches usando la herramienta provista para eso en el Catálogo de activos editor)

Cualquiera sea el resultado producido, no debería / no debe cavar en los detalles internos de su package de esa manera. El formatting del file .car incluso puede cambiar de una versión de iOS a otra (quién sabe? Que son detalles internos, después de todo, que no deberíamos tener que tratar), así que no bases tu lógica en ella.

[EDIT]: si necesita asegurarse de tener un directory con su set de imágenes al final de la compilation, puede usar una reference de carpeta (hacer reference a una carpeta real en el Finder, en lugar de un "grupo" Xcode como solo files grupales en Project Navigator de Xcode), luego usa el código para navegar por él. Pero luego tendrás que lidiar con otros detalles, como explorar files que coincidan con el dispositivo actual (iPhone vs. iPad, no retina vs. retina …), por lo que esto solo cambiaría el problema en tu caso; realmente debería usar una constante en algún lugar para declarar el número de imágenes (o poner esto en algún file PLIST, por ejemplo) y recorrerlas a través de ellas.

Como los files que proporciona en time de compilation estarán en su package, que no se puede modificar una vez comstackdo, ya que está firmado digitalmente, la cantidad de imágenes nunca cambiará una vez que la aplicación se compile de todos modos. (No es como si usara el directory de Documentos y habilitó Compartir files de iTunes o lo que sea, permitiendo que el usuario agregue imágenes él mismo ;-))

Si estás orientado a iOS 7+, entonces no. Xcode empaquetará los files en un formatting propietario (.car) que no puede acceder directamente.

Utilice imageNamed: methods, o no use Catálogos de imágenes para los files a los que necesita acceder directamente.

como @AliSoftware sugiere que puede almacenar todas las imágenes de los resources para cargarlas y acceder a ellas más adelante para get más detalles, consulte aquí