2016-09-17 3 views
0

私はこの新しいビルドをインストールした後、ディレクトリに保存されたイメージが表示されないのはなぜですか?

func saveImage (image: UIImage, path: String) -> Bool{ 
    let jpgImageData = UIImageJPEGRepresentation(image, 1.0) 
    let result = jpgImageData!.writeToFile(path, atomically: true) 
    return result 
} 

func getDocumentsURL() -> NSURL { 
    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
    return documentsURL 
} 

func fileInDocumentsDirectory(filename: String) -> String 
    let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename) 
    return fileURL.path! 
} 

let imagePath = fileInDocumentsDirectory(myImageName) 
saveImage(yourPickedImage, path: imagePath) 

のように、ユーザのフォトライブラリから画像を保存して、私はXcodeの8の新しいビルドをインストールするまで、画像が行う、このすべてが正常に動作します。この

func loadImageFromPath(path: String) -> UIImage? { 
    let image = UIImage(contentsOfFile: path) 
    return image 
} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! Cell 


    cell.backgroundImage.image = loadImageFromPath(String(Globals.imagesArray[(indexPath as NSIndexPath).item])) 

のように、それらの画像を読み取りますUIImageViewにロードされません。

ファイルパスが変更される可能性があります。アプリケーションを終了して再起動するとイメージが読み込まれるため、新しいビルドからは読み込まれないためです。

これをどのように修正すればよいですか?

おかげ

答えて

3

問題は、すでに容疑者として、あなたはpathの値を保存し、ファイルをロードしようとするために、後でそれを使用していることです。パスは毎回異なるため、あなたはそれを行うことはできません。あなたはを呼び出してのロードをとするすべての作業を行う必要があります。と同じように、を保存します。

(これはあなたがfileInDocumentsDirectoryでそうであるように、URLを構築し、それのうち、文字列のパスを作り、あなたの質問とは何の関係もないのにまた、愚かである。全体のURLにこだわる!)

+0

こんにちはおかげさまで助けてください。 imagePath = fileindocumentsdirectory(myimagename)をloadimagefrompath()に配置しますか? – Khoury

+0

あなたの 'Globals.imagesArray'について考えてみましょう。それは完全な_paths_を含んでいます。代わりに、元々ファイルを保存したときの作業を行います。画像ファイル_name_のみを 'Globals.imagesArray'に入れてください。時間が来ると、あなたが保存したときと同じように完全なURL /パスを_calculate_してください。 – matt

+0

ありがとう、それは完璧なトリックでした! – Khoury

関連する問題