[英]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])")
它不返回可讀的文件名,而是返回:
The first image is <UIImage: 0x7fe211d2b1a0>
我可以將此輸出轉換為可讀文本,還是有不同的方法從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
}
...正如我所說,這對我有用,我需要它的場景,我希望你也可以使用它!
祝好運!
一旦創建了UIImage
的實例,就會丟失對該名稱的所有引用。 例如,當您從文件中創建圖像時,您執行以下操作:
var image: UIImage = UIImage(named: "image.png")
完成之后,不再有對文件名的引用。 所有數據都存儲在UIImage
實例中,無論它來自何處。 正如上面的評論所述,如果必須這樣做,你需要設計一種存儲名稱的方法。
我的方法是從一系列名稱開始(因為你不能輕易地回到圖像中的名字):
let imageNames = [ "Red.png", "Green.png", "Blue.png", "Yellow.png"]
然后,您可以使用以下方法創建圖像數組:
let images = imageNames.map { UIImage(named: $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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.