获取位于 Assets.xcassets 的数据集中文件的路径

Jul*_*lhé 5 bundle swift swift3

我的文件中有一组音频文件Assets.xcassets

Assets.xcassets

我正在尝试获取这样的音频文件之一的路径:

let path: String = Bundle.main.path(forResource: "acoustic_grand_piano/A4", ofType: "f32")!
Run Code Online (Sandbox Code Playgroud)

但我得到一个EXC_BAD_INSTRUCTION. 我试图在互联网上查看,但在数据集上找不到任何内容。

如何获取这些文件之一的内容?

谢谢!

小智 2

尝试这个:

  • 手动将文件放入文件夹中,命名为您想要的任何名称。

  • 将“.bundle”附加到文件夹以创建包。你会收到警告,接受它。恭喜,您刚刚创建了第一个捆绑包!:-)

  • 手动将该文件夹拖到您的应用程序中。

  • 使用以下代码获取您的文件......

     public func returnFile(_ named:String) -> String {
         let path: String = Bundle.main.path(forResource: "myAudioFiles", ofType: "bundle")! + "/" + name + ".f32"        
         do {
             return try String(contentsOfFile: path)
         }
         catch let error as NSError {
             return error.description
         }
     }
    
    Run Code Online (Sandbox Code Playgroud)

现在,我的文件是 CIKernel 代码的文本文件。由于您的文件是音频文件,您可能需要将字符串返回更改为其他内容。

编辑:

就我而言,我使用的是框架,因为我希望与扩展程序和其他应用程序共享这些文件/图像。如果您正在这样的设置中工作,以下是未更改的代码:

public func returnFile(_ resource:String, _ fileName:String, _ fileType:String) -> String {
    let identifier = "com.companyname.appname" // replace with framework bundle identifier
    let fileBundle = Bundle.init(identifier: identifier)
    let filePath = (fileBundle?.path(forResource: resource, ofType: "bundle"))! + "/" + fileName + "." + fileType
    do {
        return try String(contentsOfFile: filePath)
    }
    catch let error as NSError {
        return error.description
    }
}
Run Code Online (Sandbox Code Playgroud)