从Swift中的NSBundle获取文件路径

时间:2015-12-17 14:59:24

标签: swift file nsbundle

我的文件存储在:

/var/mobile/Containers/Data/Application/083EA15E7/Documents/myFile.zip

从服务器下载后,它就到了那里。

如果我知道文件名是myFile.zip,我该怎样才能找到NSBundle

像这样:

if let URL = NSBundle.mainBundle().URLForResource("myFile", withExtension: "zip") {
    // do stuff
}

目前返回false,不知道如何指定整个路径。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

经过测试: xCode 8.3.2 & Swift 3.1

首先在项目文件夹中拖动文件(JPG,MP3,ZIP)并确保选中复制项目(如果需要)并在添加到目标 enter image description here

在相关的 ViewController

let fileName = "fileName"
let fileType = "fileType"

if let filePath = Bundle.main.path(forResource: fileName, ofType: fileType) {
    print(filePath)
}

如果您需要获取文件URL,可以使用NSBundle方法

if let fileURL = Bundle.main.url(forResource: fileName, withExtension: fileType) {
    print(fileURL)
}

NSBundle方法pathForResource还有一个初始化程序,您可以在其中指定文件所在的目录,如:

if let filePath = Bundle.main.path(forResource: fileName, ofType: fileType, inDirectory: "filesSubDirectory") {
    print(filePath)
}

获取文件网址:

if let fileURL = Bundle.main.url(forResource: fileName, withExtension: fileType, subdirectory: "filesSubDirectory") {
    print(fileURL)
}

答案 1 :(得分:1)

运行时创建的文件存储在不在NSBundle中的Document目录中。 NSBundle存储文件,如您在开发

时放入Xcode项目的系统文件

以下是示例

  

此代码在Swift 2.0上进行了全面测试

let file = "myFile.zip"
        if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
           //path will be stored here
            let sPath = dir.stringByAppendingPathComponent(file);

      print(sPath) //  printing the file path

        }