2016-12-13 1 views
4

ich einen Datensatz von Audio-Dateien in meinem Assets.xcassets:Erhalten Pfad einer Datei in einem Datensatz befindet sich in Assets.xcassets

Assets.xcassets

Ich versuche, den Weg einer von denen zu bekommen Audiodateien wie folgt aus:

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

Aber ich bekomme einen EXC_BAD_INSTRUCTION. Ich habe versucht, im Internet nachzuschlagen, aber ich finde nichts in Datensätzen.

Wie bekomme ich den Inhalt einer dieser Dateien?

Danke!

+0

Siehe auch: http://stackoverflow.com/a/39891180/1457385 – shallowThought

Antwort

2

Try this:

  • manuell Ihre Dateien in einem Ordner abgelegt, mit dem Namen, was Sie wollen.
  • Fügen Sie ".bundle" dem Ordner hinzu, um ein Bündel zu erstellen. Du wirst eine Warnung erhalten, akzeptiere sie. Glückwunsch, du hast gerade dein erstes Bündel erstellt! :-)
  • Ziehen Sie den Ordner manuell in Ihre App.
  • Get auf Ihre Dateien, indem Sie den folgenden Code verwenden ....

    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 
        } 
    } 
    

Nun, meine Dateien sind Textdateien von CIKernel Code. Da Ihre Dateien Audiodateien sind, müssen Sie möglicherweise die Zeichenfolge zurück zu etwas anderem ändern.

EDIT:

In meinem Fall verwende ich einen Rahmen, wie ich diese Dateien/Bilder mit Erweiterungen und anderen Anwendungen gemeinsam nutzen will. Wenn Sie in eine solche einrichten arbeiten, hier ist die unveränderte Code:

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 
} 

}

Verwandte Themen