从主包复制到应用程序支持swift

时间:2014-10-29 06:18:02

标签: macos cocoa swift

我之前从应用程序中复制了这样的文件,并且完全按照它在另一个应用程序中显示的方式复制了代码,但出于什么原因,当它尝试运行此特定代码时,它只会创建新目录。

但是,它不会将我在主包中支持文件中保存的二进制文件保存到新目录中。我已经做了大量的谷歌搜索和搜索堆栈溢出,并决定我可能要在这里发布一些东西。

let path = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("youtube-dl")
let destination = "~/Library/Application Support/Youtube DLX/"
let destinationPath = destination.stringByStandardizingPath

NSFileManager.defaultManager().createDirectoryAtPath(destinationPath, withIntermediateDirectories: true, attributes: nil, error: nil)
NSFileManager.defaultManager().copyItemAtPath(path!, toPath: destinationPath + "youtube-dl", error: nil)

请注意我尝试复制的文件没有扩展名,因此全名只是“youtube-dl”

1 个答案:

答案 0 :(得分:2)

的结果
let destinationPath = destination.stringByStandardizingPath

没有尾部斜杠,因此您尝试将文件复制到

"~/Library/Application Support/Youtube DLXyoutube-dl"

你应该使用

destinationPath.stringByAppendingPathComponent("youtube-dl")

生成目标路径,就像您对源路径所做的那样。

通常(如评论中所述),您应该使用error参数和 检查成功的返回值,例如

var error : NSError?
if !NSFileManager.defaultManager().copyItemAtPath(..., error: &error) {
    println("copy failed: \(error)")
}