Swift:如何从UIImage数组中提取图像文件名

时间:2015-03-18 03:21:55

标签: ios arrays swift uiimage filenames

如果我有一个像这样的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])")

不返回可读文件名,而是返回:

The first image is <UIImage: 0x7fe211d2b1a0>

我可以将此输出转换为可读文本,还是有不同的方法从UIImage数组中提取文件名?

4 个答案:

答案 0 :(得分:4)

我看了一下,因为这对我来说也是一个问题。 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
}

...正如我所说,这对我有用,我需要它的场景,我希望你也可以使用它!

祝你好运!

答案 1 :(得分:1)

创建UIImage的实例后,对名称的所有引用都将丢失。例如,当您从文件中创建图像时,您可以执行以下操作:

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

完成后,不再有对文件名的引用。所有数据都存储在UIImage实例中,无论它来自何处。正如上面的评论所述,如果必须这样做,你需要设计一种存储名称的方法。

答案 2 :(得分:0)

我的方法是从一系列名称开始(因为你不能轻易地回到图像中的名字):

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

然后您可以使用以下方法创建图像数组:

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

答案 3 :(得分:0)

这是一个非常棘手的问题。我终于设法让它在Table View Controller中工作。 (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)

        }