我正在尝试将文件移动到默认Documents目录中某个随机目录中的某个级别。但是在复制时,Swift给了我错误Cocoa Error 262:NSFileReadUnsupportedSchemeError
。为什么我会收到此错误?我跑了一个快速搜索,几乎每个遇到这个问题的人都试图将文件复制到相机胶卷中,但我不是。有什么想法吗?提前谢谢。
代码在这里:
private func copyFilesInDirectory(fromDir: String, toDirectory toDir: String, withCompletionHandler handler: ()->()){
println("from: \(fromDir)\nto: \(toDir)")
var error: NSError?
var contents = fileManager.contentsOfDirectoryAtPath(fromDir, error: &error)
if let dirContents = contents{
let enumerator = (dirContents as NSArray).objectEnumerator()
while let file = enumerator.nextObject() as? String{
let filePath = fromDir.stringByAppendingString("/\(file)")
println("copying \(filePath)")
if(fileManager.copyItemAtURL(NSURL(fileURLWithPath: filePath)!, toURL: NSURL(string: toDir)!, error: &error)){
println("COPIED")
}
else{
println("COPY ERROR: \(error!.localizedDescription)")
}
}
handler()
}
}
如果有人感兴趣,这是日志:
from: /Users/dolce/Library/Developer/CoreSimulator/Devices/05566649-BABB-44BE-BE6F-AFF7B41E3065/data/Containers/Data/Application/F5A83C94-C177-4826-BDD5-3A50E7508239/Documents/Hello/tmp
to: /Users/dolce/Library/Developer/CoreSimulator/Devices/05566649-BABB-44BE-BE6F-AFF7B41E3065/data/Containers/Data/Application/F5A83C94-C177-4826-BDD5-3A50E7508239/Documents/Hello
copying /Users/dolce/Library/Developer/CoreSimulator/Devices/05566649-BABB-44BE-BE6F-AFF7B41E3065/data/Containers/Data/Application/F5A83C94-C177-4826-BDD5-3A50E7508239/Documents/Hello/tmp/test.png
COPY ERROR: The operation couldn’t be completed. (Cocoa error 262.)
答案 0 :(得分:1)
toURL
的{{1}}参数不得为目的地
目录,但目标文件的网址。这可以
用
copyItemAtURL()
您还应该替换
let destPath = toDir.stringByAppendingPathComponent(file)
与
let filePath = fromDir.stringByAppendingString("/\(file)")
还有一种let filePath = fromDir.stringByAppendingPathComponent(file)
方法可以帮您免除
将路径转换为URL。
答案 1 :(得分:0)
在iOS设备上,简单的答案就是你做不到。在模拟器上,情况略有不同。您可能正在处理的是您尝试写入的目录的文件权限。
作为iOS的一般规则,您可以写入指定目录,如文档/缓存和无其他。