Ios Swift-如何获取文件夹中的文件路径

Ios Swift-如何获取文件夹中的文件路径,ios,swift,Ios,Swift,我在一个文件夹里有一组音频文件。当文件放置在主捆绑包中时,我可以访问该文件,但如果文件在文件夹中移动,我将无法访问这些文件 代码: let audioFileName:String = "audioFiles/" + String(index) let audioFile = NSBundle.mainBundle().pathForResource(audioFileName, ofType: "mp3")! 我在audioFiles文件夹中有一个音频文件,我想知道它的路径 错误: 致命错误

我在一个文件夹里有一组音频文件。当文件放置在主捆绑包中时,我可以访问该文件,但如果文件在文件夹中移动,我将无法访问这些文件

代码:

let audioFileName:String = "audioFiles/" + String(index)
let audioFile = NSBundle.mainBundle().pathForResource(audioFileName, ofType: "mp3")!
我在audioFiles文件夹中有一个音频文件,我想知道它的路径

错误:

致命错误:在展开可选值时意外发现nil


首先,请确保将文件夹音频文件拖到项目中以检查复制项目(如果需要),然后选择“创建文件夹引用”。确保在您的项目中显示蓝色文件夹

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

let audioFileName = "audioName" 

if let audioFilePath = Bundle.main.path(forResource: audioFileName, ofType: "mp3", inDirectory: "audioFiles") {
    print(audioFilePath)
}
如果要获取该文件URL,可以使用NSBundle方法URLForResource(扩展名:,子目录:)


Leo的答案应该是可行的,关键的一步是检查“需要时复制项目”。但是,如果您已经创建了一个文件或忘记了那个关键步骤,该怎么办

它很容易修理

转到
项目
->
构建阶段
->
复制捆绑资源

在这里,您将看到一个方便的列表,其中列出了您添加到捆绑包中的所有文件(包括所有xcassets!)

单击“添加”按钮,找到丢失的未链接文件

您的代码现在可以工作了(我构建了自己的示例,因此它与您的名称不同):


那我们为什么一开始就找不到文件呢?简单。我们要的是包裹。“嘿,我的档案在哪里?”。我就像。。。我不知道那个文件,如果你检查了它的一部分(正在复制的捆绑资源)列表,它就不存在了。塔达

问题在哪里?请添加更多信息您确定音频文件安装在应用程序捆绑包的子目录中吗?是的,音频文件位于应用程序捆绑包的子目录中。您的文件夹为黄色,应该是与swift文件位于同一文件夹中的蓝色文件夹。如果您不按我所说的复制文件,则没有任何帮助。AppDelegate.swift下面的蓝色文件夹谢谢。成功了。最初,我在Xcode中创建了文件夹,然后按照您解释的方式添加了文件。现在,我已经清除了所有内容,并按照您解释的方式添加了完整的文件夹。谢谢!例如swift 3。如果让indexFilePath=Bundle.main.path(forResource:“index”,of type:“html”,inDirectory:“无家可归者帮助网站”){print(indexFilePath)}不起作用,我也不知道为什么。文件名和折叠名称是正确的,但程序并没有看到它。
if let audioFileURL = Bundle.main.url(forResource: audioFileName, withExtension: "mp3", subdirectory: "audioFiles") {
    print(audioFileURL)
}
        if let url = Bundle.main.url(forResource: "testData2", withExtension: "txt") {
            do {

                let myData = try Data(contentsOf: url)
                print(myData.count)
            } catch {
                print(error)
            }
        }