我从DocumentPicker下载文件(iCloud,dropbox等)。该文件可以是.pages,.docx,.pdf,...
当我想将其转换为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")
}
我无法弄清楚为什么它是零,文件存在于此路径中! 我的错误在哪里?
更多信息
截图,显示它不是范围问题,但初始化程序(如我的问题标题中所述)已经返回nil。在此示例中,我使用contentsOfFile
使用ErrorPointer
"操作无法完成。 (可可错误257。)" UserInfo = 0x7fac556cbf00 {NSFilePath = SUPERLONGPATH< NSUnderlyingError = 0x7fac570beb20"操作无法完成。权限被拒绝"})
文件来源
该文件通过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
}
解决方案
碰巧.pages和.numbers"文件"没有文件,但文件夹(容器)。所以他们无法上传。使用.pdf现在可以使用了。感谢大家的帮助
答案 0 :(得分:-1)
看起来范围问题。您在大括号内定义了局部变量data
,并且在大括号后它将不存在。
删掉let
这个词。
通过这种方式,您将从封闭范围中分配可变数据