Swift:复制文件会产生Cocoa Error 262

时间:2015-04-11 19:48:41

标签: ios swift

我正在尝试将文件移动到默认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.)

2 个答案:

答案 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的一般规则,您可以写入指定目录,如文档/缓存和其他。