我正在嘗試將使用Alamofire下載的圖像加載到文檔目錄中。我將文件名存儲在Realm數據庫中。一旦到了顯示圖像的時間,我就可以通過文件目錄的路徑追加文件名。儘管這條路徑似乎不適用於構建UIImage。問題設置從本地圖像在文檔目錄中的UIImageView
if let name = playlist.RLMsongs[indexPath.row].name, let imageURL = playlist.RLMsongs[indexPath.row].album?.image?.getImageURL(.SmallImage), let fileName = playlist.RLMsongs[indexPath.row].album?.image?.smallLocalFileName {
cell.songName.text = name
let range = imageURL.rangeOfString("http")
if let theRange = range where theRange.startIndex == imageURL.startIndex { // imageURL starts with "http" (remote url)
cell.albumImage.sd_setImageWithURL(NSURL(string: imageURL), placeholderImage: UIColor.imageFromColor(UIColor.grayColor())) {
_ in
cell.albumImage.fadeIn(completion: nil)
}
} else {
cell.albumImage.image = UIImage(named: fileName) // images still do not load
// tried this first -> cell.albumImage.sd_setImageWithURL(NSURL(fileURLWithPath: imageURL), placeholderImage: UIColor.imageFromColor(UIColor.grayColor()))
}
}
這裏是構建路徑(以上IMAGEURL)位:
let documentsDir = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let path = documentsDir.URLByAppendingPathComponent(localFile).path
return path
按照蒂姆的建議我查了斷點IMAGEURL的價值,它看起來只是罰款:
imageURL: "/Users/danielnall/Library/Developer/CoreSimulator/Devices/0B8D64B5-9593-4F86-BBD3-E408682C5C0F/data/Containers/Data/Application/011E4805-40EB-4221-9D7D-1C1D64660186/Documents/75.9226ecd6893cb01a306c974d9d8ffd62803109c1.png"
這是模擬器上的完整路徑,它只是缺少文件模式(file://),對於NSURL fileURLWithPath的使用應該很好,我認爲。
你可不可以只發布微代碼片段。發佈函數和類,以便我們可以看到它是如何工作的。另外,當你有像'sd_setImageWithURL'這樣的函數時,我會對它的工作原理感興趣,而不必猜測它的功能。 – ryantxr
這似乎意味着您構建文件路徑的方式存在問題。我建議通過斷點檢查並檢查'imageURL'的實際值,以確保它們符合你的期望。 – TiM
@ryantxr sd_setImageWithURL是庫中的函數sdwebimage –