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

我的Assets.xcassets中有一个音频文件数据集:

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

我正试图获取其中一个音频文件的路径,如下所示:

let path: String = Bundle.main.path(forResource: "acoustic_grand_piano/A4", ofType: "f32")!

但是我得到了一个EXC_BAD_INSTRUCTION.我试着在互联网上看,但我在数据集上找不到任何东西.

如何获取其中一个文件的内容?

谢谢!

最佳答案 试试这个:

>手动将文件放入文件夹中,命名为您想要的任何名称.
>将“.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
    }
}

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

编辑:

在我的情况下,我正在使用框架,因为我希望与扩展和其他应用程序共享这些文件/图像.如果你正在进行这样的设置,这里是未改变的代码:

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
}

}

点赞