2016-03-14 82 views
0

我正在嘗試將使用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的使用應該很好,我認爲。

+0

你可不可以只發布微代碼片段。發佈函數和類,以便我們可以看到它是如何工作的。另外,當你有像'sd_setImageWithURL'這樣的函數時,我會對它的工作原理感興趣,而不必猜測它的功能。 – ryantxr

+0

這似乎意味着您構建文件路徑的方式存在問題。我建議通過斷點檢查並檢查'imageURL'的實際值,以確保它們符合你的期望。 – TiM

+0

@ryantxr sd_setImageWithURL是庫中的函數sdwebimage –

回答

0

我最終找到解決它無關對這個問題的方向問題。原來,這個問題是在我的UITableViewCell類中的prepareForReuse方法的重寫。不過謝謝大家的建議。

0

如果你已經在文檔中有PNG文件,那麼你所需要做的就是這個。

(假設cell.albumImage是的UIImageView)

let imageFileName = "75.9226ecd6893cb01a306c974d9d8ffd62803109c1.png" 
cell.albumImage.image = UIImage(named: imageFileName) 

檢查文件是否存在:

func fileExists(filePath: String) -> Bool { 
    let filemanager = NSFileManager.defaultManager() 
    if filemanager.fileExistsAtPath(filePath) { 
     return true 
    } 
    return false 
} 
+0

嘗試了這一點,圖像仍然無法加載。請參閱上述編輯中的問題。 –

+0

檢查文件是否存在。 – ryantxr

+0

是的,我檢查和文件確實存在。我甚至導航到Finder中的圖像,並已驗證圖像有數據並且沒有損壞或任何東西。 –

相關問題