项目的完整路径

时间:2014-07-05 02:02:02

标签: cocoa swift

我想在Swift中打开一个文本文件,我设法将完整路径作为参数传递:

let dados = String.stringWithContentsOfFile("/Users/aczuquim/Google Drive/Swift/Verdadeiro ou Falso/Verdadeiro ou Falso/Dados.txt", encoding: NSUTF8StringEncoding, error: nil)

因为,我将文件添加到项目中,有没有办法使用相对路径?

当我使用相对路径时,会返回nil

更新

在操场上,下面的线路工作正常:

let dados = String.stringWithContentsOfFile("/Users/aczuquim/Google Drive/Swift/Verdadeiro ou Falso/Verdadeiro ou Falso/dados.txt", encoding: NSUTF8StringEncoding, error: nil)

但不是以下的(pathnil):

let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("dados", ofType: "txt")

1 个答案:

答案 0 :(得分:4)

捆绑资源:

Swift 3.0

if let bundle = Bundle.main().urlForResource("Info", withExtension: "plist") {
    print("Path: \(bundle)")
}

Swift 2.0

let bundleURL = NSBundle.mainBundle()!.URLForResource("dados", withExtension: "txt")
        println("\(bundleURL)")

如果返回nil,则找不到资源并报告错误(请注意mainBundle后的感叹号)。检查构建阶段 - 如果包含资源,则复制捆绑资源。

应用和文档文件夹

[AnyObject]!数组中获取文档文件夹,将第一个对象强制转换为NSURL类型:

let docFolderURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
        println("DocumentFolderURL: \(docFolderURL)")

然后通过升级到父文件夹并删除最后一个路径组件来获取App文件夹:

let appFolderURL = docFolderURL.URLByDeletingLastPathComponent
println("AppFolderURL: \(appFolderURL)")

可以使用.URLByAppendingPathComponent(pathComponent: String?, isDirectory:Bool)等访问其他目录。

临时目录

var tempURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true).URLByDeletingLastPathComponent

请注意,Apple现在更喜欢使用网址来访问文件夹和文件,而新方法则专门使用它们。要在旧方法中使用路径,请致电:tempURL.path