2016-09-17 1 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) 

И я читал эти образы, как этот

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])) 

Это все работает отлично, пока я не установить новую сборку в Xcode 8, изображения делают не загружайте в UIImageView.

У меня возникло ощущение, что путь к файлу меняется, потому что изображения загружаются, если я ухожу и перезапустите приложение, но не из новой сборки.

Как исправить это?

Благодаря

ответ

3

Проблема, как вы уже подозреваете, что вы сохраняете значение path и использовать его позже, чтобы попытаться загрузить файл. Вы не можете этого сделать, потому что путь будет разным каждый раз. Вам нужно пройти всю работу по вызову imagePath = fileInDocumentsDirectory(myImageName), чтобы загрузить путь, как вы это делали, когда вы сохранено it.

(Кроме того, хотя это не имеет ничего общего с вопросом, строя URL, а затем делает строковый путь из него, как вы делаете в fileInDocumentsDirectory, это глупо. Придерживайтесь URL во всем!)

+0

Привет , спасибо за помощь. Я устанавливаю файл imagePath = fileindocumentsdirectory (myimagename) в loadimagefrompath()? – Khoury

+0

Подумайте о своем 'Globals.imagesArray'. Он содержит полный _paths_. Вместо этого сделайте то, что вы сделали, когда вы первоначально сохранили файл. Поместите только файл изображения _name_ в 'Globals.imagesArray', и когда придет время для загрузки, _calculate_ полный URL/путь так же, как и при сохранении. – matt

+0

Спасибо, что сделал трюк отлично! – Khoury