Swift: 如何从 UIImage 数组中提取图像文件名
Swift: How to extract image filename from an array of UIImage
如果我有一个像这样的 UIImage 数组:
newImageArray = [UIImage(named:"Red.png")!,
UIImage(named:"Green.png")!,
UIImage(named:"Blue.png")!, UIImage(named:"Yellow.png")!]
以后如何提取或确定某个索引的图像的文件名?例如:
println("The first image is \(newImageArray[0])")
它没有返回可读的文件名,而是 returns:
The first image is <UIImage: 0x7fe211d2b1a0>
我能否将此输出转换为可读文本,或者是否有其他方法从 UIImage 数组中提取文件名?
创建 UIImage
的实例后,所有对该名称的引用都将丢失。例如,当您从文件制作图像时,您会执行如下操作:
var image: UIImage = UIImage(named: "image.png")
完成后,不再有对文件名的引用。所有数据都存储在 UIImage
实例中,无论它来自何处。正如上面的评论所说,如果必须这样做,您需要设计一种存储名称的方法。
我环顾四周,因为这在过去对我来说也是一个问题。 UIImage 不存储图像的文件名。我为解决这个问题所做的不是图像数组,而是我使用了一个字典,其中键作为文件名,值作为图像。在我的 for 循环中,我将每个项目的键和值提取到一个元组中并进行处理。
我不再有代码,但作为我在下面看到的内容的快速模拟,(我希望这符合您的要求,因为我知道每个应用程序都不一样)
var imageDictionary = ["image1.png": UIImage(named: "image1.png"),
"image2.png": UIImage(named: "image2.png")]
然后 for 循环将如下所示:
for (key, value) in imageDictionary {
println(key) // Deal with Key
println(value) // Deal with Value
}
...正如我所说的,这对我和我需要它的场景都有效,我希望你也能使用它!
祝你好运!
我的方法是从一组名称开始(因为您无法轻易从图像中返回名称):
let imageNames = [ "Red.png", "Green.png", "Blue.png", "Yellow.png"]
然后您可以使用以下方法创建图像数组:
let images = imageNames.map { UIImage(named: [=11=]) }
这真的很棘手。我终于设法让它在 Table 视图控制器中工作。 ( Swift 2.1, Xcode 7)
我的图片名称在 'icons' 数组中,扩展名为 .png。
我为图像名称创建了一个数组。
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)
}
如果我有一个像这样的 UIImage 数组:
newImageArray = [UIImage(named:"Red.png")!,
UIImage(named:"Green.png")!,
UIImage(named:"Blue.png")!, UIImage(named:"Yellow.png")!]
以后如何提取或确定某个索引的图像的文件名?例如:
println("The first image is \(newImageArray[0])")
它没有返回可读的文件名,而是 returns:
The first image is <UIImage: 0x7fe211d2b1a0>
我能否将此输出转换为可读文本,或者是否有其他方法从 UIImage 数组中提取文件名?
创建 UIImage
的实例后,所有对该名称的引用都将丢失。例如,当您从文件制作图像时,您会执行如下操作:
var image: UIImage = UIImage(named: "image.png")
完成后,不再有对文件名的引用。所有数据都存储在 UIImage
实例中,无论它来自何处。正如上面的评论所说,如果必须这样做,您需要设计一种存储名称的方法。
我环顾四周,因为这在过去对我来说也是一个问题。 UIImage 不存储图像的文件名。我为解决这个问题所做的不是图像数组,而是我使用了一个字典,其中键作为文件名,值作为图像。在我的 for 循环中,我将每个项目的键和值提取到一个元组中并进行处理。
我不再有代码,但作为我在下面看到的内容的快速模拟,(我希望这符合您的要求,因为我知道每个应用程序都不一样)
var imageDictionary = ["image1.png": UIImage(named: "image1.png"),
"image2.png": UIImage(named: "image2.png")]
然后 for 循环将如下所示:
for (key, value) in imageDictionary {
println(key) // Deal with Key
println(value) // Deal with Value
}
...正如我所说的,这对我和我需要它的场景都有效,我希望你也能使用它!
祝你好运!
我的方法是从一组名称开始(因为您无法轻易从图像中返回名称):
let imageNames = [ "Red.png", "Green.png", "Blue.png", "Yellow.png"]
然后您可以使用以下方法创建图像数组:
let images = imageNames.map { UIImage(named: [=11=]) }
这真的很棘手。我终于设法让它在 Table 视图控制器中工作。 ( Swift 2.1, Xcode 7)
我的图片名称在 'icons' 数组中,扩展名为 .png。 我为图像名称创建了一个数组。
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)
}