2016-07-21 2 views
2

Я получаю сообщение об ошибке при записи файла изображения в каталог в Xcode. Функция data.writeToFile возвращает ошибку. Вот что я пытаюсь сделать:Записать изображение в файл в каталоге

Получить путь к файлу:

func getPath(fileName: String) -> String { 
     let documentURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
     let folder = "sampleDirectory" 
     return documentURL.URLByAppendingPathComponent(folder).URLByAppendingPathComponent(fileName).path! 
    } 

Сохранить изображение

func saveImage(image: UIImage, path: String) -> Bool { 
     let pngImageData = UIImagePNGRepresentation(image) 
     do { 
      let success = try pngImageData?.writeToFile(path, options: NSDataWritingOptions.init(rawValue: 0)) 
     } catch { 
      print(error) 
     } 
     return false 
    } 

Однако, есть ошибка, говоря:

NSPOSIXErrorDomain - code : 2 

Кто-нибудь знает, в чем проблема?

EDIT Если я вызываю код:

let fileName = "first_image" 
let imagePath = self.getPath(fileName) 
let result = self.saveImage(processedImage, path: imagePath) 

processedImage имеет тип UIImage!

+0

IOS устройства или симулятора? –

+0

Устройство iOS, где это происходит. – hockeybro

+0

Не могли бы вы добавить код 'saveImage (..)'? –

ответ

1

Попробуйте создать каталог «sampleDirectory», если он не существует или не используется подкаталог. Вы можете проверить, если каталог существует с:

if !NSFileManager.defaultManager().fileExistsAtPath(path) { // create missing directories try! NSFileManager.defaultManager().createDirectoryAtPath(foo, withIntermediateDirectories: true, attributes: nil) }

Вы также можете использовать опцию NSDataWritingOptions.DataWritingAtomic, который первая запись в качестве вспомогательного файл, а затем обмениваться файлами, если не были никаких ошибок