Sandboxes OSX App und resource file

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sandboxes OSX App und resource file

    Quellcode

    1. path = Bundle.main.resourcePath!
    2. var theURL : URL = URL(fileURLWithPath: path)
    3. theURL = theURL.appendingPathComponent(filename)
    4. var data : Data?
    5. do {
    6. data = try Data.init(contentsOf: theURL, options: NSData.ReadingOptions())
    7. } catch {
    8. return false
    9. }
    Hallo,

    ich beiße mir grade irgendwie die Zähne aus.
    Zugegeben, ich stand immer auf Kriegsfuß mit Sandboxing.. jetzt muss ich durch.

    Ich habe eine Datei im "Contents/Resources" Folder liegen und möchte diese bei Programmstart automatisch laden.

    var path = NSHomeDirectory() // Führt bei sandboxed nicht in den Resources Folder
    path = Bundle.main.resourcePath! // Führt auch nicht in den Resources Folder wenn Sandboxing an ist

    var url = Bundle.main.url(forResource: "interface", withExtension:"config") führt leider auch nicht zum ziel

    Wie komme ich nun an die Datei ?

    Ohne Sandbox klappt der "gepostete" Code ohne Probleme....

    Könnt Ihr mich erleuchten ?
  • Hi,

    ist dass denn nicht die Variante, die nicht geht, wie ich geschrieben hatte ?

    "var url = Bundle.main.url(forResource: "interface", withExtension:"config") führt leider auch nicht zum ziel"

    Es wird zwar geladen, aber ich kriege auch folgende Meldung:


    2017-02-21 20:49:29.440593 AMEditor[30768:2999902] [User Defaults] Failed to read values in CFPrefsPlistSource<0x6000000e0780> (Domain: xxxx.xxxx, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null)): accessing preferences outside an application's container requires user-preference-read or file-read-data sandbox access, detaching from cfprefsd
  • Aber warum kommt die Meldung nicht, wenn ich die "Resource" nicht lade ?


    Edit: Sorry, Du scheinst recht zu haben. Die Meldung kommt auch so. Ich habe nur Probleme, die ich nicht verstehe mit dem Sandboxing.
    Was will die Meldung von mir ? Ohne Sandbox kommt die nicht.
  • Der Zugriff auf Dateien innerhalb Deines App-Bundles funktioniert natürlich auch in der Sandbox ohne Probleme. Dein Problem hat also eine andere Ursache. Und wie kommst Du drauf, dass NSHomeDirectory() zu Deinem Ressources-Ordner führt? Das ist nicht korrekt, da landest Du entweder im Sandbox-Verzeichnis Deiner Anwendung oder im Home-Directory des Users (ohne Sandbox).