¿Cómo get la matriz de UIImage, desde la carpeta, en Swift?

Tengo un proyecto ordinario de Xcode como este …

introduzca la descripción de la imagen aquí

note que hay una carpeta (es una carpeta real, no solo un grupo) llamada "imágenes". Contiene 25 imágenes ".png".

Todo lo que quiero hacer es hacer una matriz de UIimage con cada una de esas imágenes.

(O incluso, una matriz de nombres de image o similar, que estaría bien, entonces podría cargarlos UIImage(named:

¿Cómo obtengo en esa carpeta "imágenes"? ¿Qué pasa con una subcarpeta "imágenes / autos"?

Probé algo así pero no encuentra nada …

 override func viewDidLoad() { let imageArray = NSBundle.mainBundle().URLsForResourcesWithExtension( "png", subdirectory: "images") print("test...") for n:NSURL in imageArray! { print("found ..." ,n) } } 

Asumimos que las imágenes están en el package de resources de la aplicación. Si no es así, debe asegurarse de que su directory de imágenes esté en la list en "Copy Bundle Resources" en "Build Phases" del objective.

introduzca la descripción de la imagen aquí

EDITAR Esto solo va a copyr las imágenes en el package de la aplicación, si requiere que la carpeta se copie en el package de la aplicación según el código siguiente, utilice la siguiente pregunta de StackOverflow para configurarlo correctamente.

Esto nos da una matriz de URL que luego podemos utilizar con UIImage (datos 🙂 y NSData (contentsOfURL 🙂 para crear la image cuando sea necesario.

Obtenga la ruta de resources del package y anexe el directory de imágenes y obtenga los contenidos del directory.

  if let path = NSBundle.mainBundle().resourcePath { let imagePath = path + "/images" let url = NSURL(fileURLWithPath: imagePath) let fileManager = NSFileManager.defaultManager() let properties = [NSURLLocalizedNameKey, NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey] do { let imageURLs = try fileManager.contentsOfDirectoryAtURL(url, includingPropertiesForKeys: properties, options:NSDirectoryEnumerationOptions.SkipsHiddenFiles) print("image URLs: \(imageURLs)") // Create image from URL var myImage = UIImage(data: NSData(contentsOfURL: imageURLs[0])!) } catch let error1 as NSError { print(error1.description) } } 

Joe

Intente lo siguiente:

Mi situación actual fue la siguiente. introduzca la descripción de la image aquí

  1. Tienes que registrar tus imágenes en "Copy Bundle Resources".

  2. Debe agregar el module de filter en el package principal. introduzca la descripción de la image aquí

Está funcionando también de mi lado. Tal vez pueda cambiar el filter del formatting "jpg" a "png" uno.

He probado en iOS 10.x más tarde, Swift 3.0 y xcode 8.1. Si tiene algún problema, contácteme.

Le aconsejaría que no cargue todas sus imágenes en una matriz a la vez. Las imágenes tienden a ser grandes y es fácil quedarse sin memory y fallar.

A less que tenga absolutamente que tener todas las imágenes en la memory a la vez, es mejor mantener una serie de routes o URL y cargar las imágenes de una en una según sea necesario.

Suponiendo que la carpeta llena de imágenes está en su package de aplicaciones, puede usar el método URLsForResourcesWithExtension:subdirectory: para get una matriz de NSURL para todos los files en el subdirectory de imágenes, ya sea con un tipo de file específico o TODOS los files (si es Pase nulo para la extensión.)

Una vez que tenga una matriz de urls de file, puede mapearla a una matriz de routes si es necesario, y luego asignarlas a una matriz de imágenes.