2016-10-23 16 views
1

Хорошо, так что это заставило меня немного почесывать голову.Проблема с загрузкой файла с диска

У меня есть файл png, который я выписываю на диск. Получаю данные:

let data = UIImagePNGRepresentation(scaledImage!) 
let filename = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png") 

Я пытаюсь поймать, и все работает. Полученное имя файла:

file:///var/mobile/Containers/Data/Application/C6B796E8-2DB6-45A4-9B18-EF808B8CA3CA/Documents/580420d51800cd826a7e217c.png 

Проблема возникает, когда я пытаюсь загрузить это изображение с диска.

Когда я получить список всех файлов в каталоге документов я получаю:

[file:///private/var/mobile/Containers/Data/Application/C6B796E8-2DB6-45A4-9B18-EF808B8CA3CA/Documents/580420d51800cd826a7e217c.png] 

Единственное различие я вижу, это «частный» часть FilePath. Когда я пытаюсь проверить, существует ли файл с использованием пути к файлу, я возвращаюсь из добавления имени файла (тот, у кого нет частной части), я получаю false.

Что мне не хватает?

+0

Проверьте ответ –

+0

сделал это помогло, она работала хорошо в моем случае –

ответ

-1

Swift 3/4 Код

Пусть метод getDocumentsDirectory() определяется следующим образом

func getDocumentsDirectory() -> URL { 
     let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 
     let documentsDirectory = paths[0] 
     return documentsDirectory 
} 

Для того, чтобы сохранить изображение

let data = UIImagePNGRepresentation(scaledImage!) 
let filename = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png") 
try? data?.write(to: filename) 

И ваше изображение вед в Документы Каталог

Теперь для того, чтобы загрузить его обратно

let imagePath = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png").path 

let fileManager = FileManager.default 
if fileManager.fileExists(atPath: imagePath){ 
    print("Image Present") 
    //load it in some imageView 
}else { 
    print("No Image") 
} 
+0

Вы не хватает точки. Распечатайте URL-адреса в своем коде, и вы увидите проблему: в imagePath нет ведущего «частного». – Jeyhey

+0

OP не разместил свое тело 'getDocumentsDirectory()' '' '' '' т, поэтому я принял то же самое. Мои адреса: Протестировано на устройстве-- Печать описания имени файла: '' /// var/mobile/Контейнеры/Данные/Приложение/46B10A6C-43EE-4D11-83E5-88B6ADF1E646/Documents/testImage.png "' описание Печать ImagePath: ' "/var/mobile/Containers/Data/Application/46B10A6C-43EE-4D11-83E5-88B6ADF1E646/Documents/testImage.png"' Так что, я думаю, что есть какая-то проблема в ' getDocumentsDirectory() 'тело функции, которое делает URL-адрес, ведущий частным, возвращая изображение назад. Это было предположение. –