Swift: Cómo extraer el nombre de file de image de una matriz de UIImage

Si tengo una matriz de UIImage así:

newImageArray = [UIImage(named:"Red.png")!, UIImage(named:"Green.png")!, UIImage(named:"Blue.png")!, UIImage(named:"Yellow.png")!] 

¿Cómo puedo extraer o determinar el nombre del file de una image de un determinado índice más adelante? Por ejemplo:

 println("The first image is \(newImageArray[0])") 

En lugar de devolver un nombre de file legible, devuelve:

 The first image is <UIImage: 0x7fe211d2b1a0> 

¿Puedo convertir este resultado en text legible, o existe un método diferente para extraer nombres de file de matrices UIImage?

He echado un vistazo, ya que también ha sido un problema para mí en el pasado. UIImage no almacena el nombre de file de la image. Lo que hice para resolver el problema fue en lugar de una matriz de imágenes. Usé un dictionary con la key como el nombre de file y el valor como la image. En mi ciclo for extraí la key y el valor de cada elemento en una tupla y traté con ellos.

Ya no tengo el código, sino una mofa rápida de lo que vi a continuación (espero que esto se ajuste a sus requisitos, ya que sé que cada aplicación es diferente)

 var imageDictionary = ["image1.png": UIImage(named: "image1.png"), "image2.png": UIImage(named: "image2.png")] 

y luego el bucle for se verá así:

 for (key, value) in imageDictionary { println(key) // Deal with Key println(value) // Deal with Value } 

… como digo, esto funcionó para mí y para el escenario en que lo necesitaba, ¡espero que puedas usarlo también!

¡Buena suerte!

Una vez que crea la instancia del UIImage , se pierden todas las references al nombre. Por ejemplo, cuando crea una image desde un file, hace algo como esto:

 var image: UIImage = UIImage(named: "image.png") 

Una vez hecho esto, no hay más references al nombre del file. Todos los datos se almacenan en la instancia de UIImage , independientemente de su origen. Como dicen los comentarios anteriores, necesitará diseñar una manera de almacenar los nombres si debe hacerlo.

Mi enfoque sería comenzar con una matriz de nombres (ya que no puede volver fácilmente a los nombres de las imágenes):

 let imageNames = [ "Red.png", "Green.png", "Blue.png", "Yellow.png"] 

Luego puede crear una matriz de imágenes usando:

 let images = imageNames.map { UIImage(named: $0) } 

Es muy complicado. Finalmente logré que funcione dentro de un controller de vista de tabla. (Swift 2.1, Xcode 7)

Mis nombres de image fueron los siguientes en la matriz 'icons' con extensión .png. Creé una matriz para los nombres de las imágenes.

  var icons = ["BirthdaysImage", "AppointmentsImage", "GroceriesImage","MiscellaneousImage"] override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("iconsReuseIdentifier", forIndexPath: indexPath) //image display iconName = icons[indexPath.row] cell.imageView?.image = UIImage(named: iconName) return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { //find out which IMAGE got selected var imageSelected = icons[indexPath.row] print(imageSelected) }