Я загружаю файл из DocumentPicker (iCloud, dropbox и т. Д.). Этот файл может быть .стр, .docx, .pdf, ...Почему NSData (contentsOfURL: url) всегда нуль?
Когда я хочу, чтобы преобразовать его в NSData для загрузки файла, я всегда получаю нулевую ценность:
if NSFileManager.defaultManager().fileExistsAtPath(urlToFile!.path!) {
let data = NSData(contentsOfURL: urlToFile!) // initializer returns nil, although file and path exist
println(data) // prints nil
}
else {
println("Does not exist")
}
Я не могу понять, почему он равен нулю, файл существует на этом пути! Где моя ошибка?
Некоторые больше информации
Скриншот, показывая, что это не проблема, сфера, но инициализатор (как указано в моем вопросительным название) уже возвращает ноль. В этом примере я использую предложение от ответа ниже, используя contentsOfFile
Использование в ErrorPointer
"The operation couldn’t be completed. (Cocoa error 257.)" UserInfo=0x7fac556cbf00 {NSFilePath=SUPERLONGPATH<NSUnderlyingError=0x7fac570beb20 "The operation couldn’t be completed. Permission denied"})
происхождения файла
Файл загружается через DocumentPicker :
let docPicker = UIDocumentPickerViewController(documentTypes: ["public.content"], inMode: UIDocumentPickerMode.Import)
docPicker.delegate = self
docPicker.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(docPicker, animated: true, completion: nil)
func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
labelDatei.text = "Bereit"
labelDateiChose.text = url.lastPathComponent
urlToFile = url
}
Решение
Как это происходит .стр и .numbers "файлы" не содержит файлов, но папки (контейнеры). Поэтому они не могут быть загружены. Теперь работает .pdf. Спасибо всем за помощь
Покажите свой реальный код, включая контекст, если вы хотите реальную помощь. – matt
Попробуйте 'var error: NSError? ; let data = NSData (contentsOfURL: urlToFile !, options: nil, error: & error) 'и напечатать ошибку в случае сбоя. –
я сделал. И обновил мой вопрос – gutenmorgenuhu