2016-07-12 11 views
2

ich folgende JXA (JavaScript für Automation) bin mit Code auf OS/X 10.11.5:JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError Ausnahme

function createFolder(path, createIntermediateDirectories) { 
 
    var error = {} 
 
    $.NSFileManager.defaultManager 
 
     .createDirectoryAtPathWithIntermediateDirectoriesAttributesError(
 
      $(path).stringByStandardizingPath, 
 
      createIntermediateDirectories, 
 
      null, 
 
      error); 
 
    if (error) 
 
     throw Error("Could not create folder '" + path + "'"); 
 
};

Ich erhalte eine Fehlermeldung, wenn dieser ausgeführt wird, obwohl Es erstellt tatsächlich den Ordner. Hier ist der Fehler:

Error: exception raised by object: -[NSNull objectForKey:]: unrecognized selector sent to instance 0x7fff7b69b780 (-2700)

durch die Tatsache zu urteilen, dass der Ordner tatsächlich erstellt wird, und der Text der Fehlermeldung, ich bin das Problem unter der Annahme ist mit den „Attributen“ Parametern, die null (nil) . Ich stelle fest, dass es den Ordner erstellt, dann geht es um die Attribute zuzuweisen, und das ist, wenn es fehlschlägt.

Wer hat irgendwelche Ideen, wie das zu beheben? Ich hatte keine Probleme, irgendwelche anderen NSFileManager-Methoden von JXA aus aufzurufen, einschließlich derjenigen, denen ich Null- und/oder Boolesche Werte überlasse, so dass dies ratlos ist.

Schätzen Sie jede Hilfe.

Antwort

2

sorry, ich jetzt nicht viel Zeit haben, ist so hier eine schnelle Lösung, die feine hier funktioniert:

function createFolder(path, createIntermediateDirectories) { 
    error = $() 

    $.NSFileManager.defaultManager.createDirectoryAtPathWithIntermediateDirectoriesAttributesError(
     $(path).stringByStandardizingPath, 
     createIntermediateDirectories, 
     $(), 
     error) 

    if (error) { 
     $.NSLog(error.localizedDescription); 
    } 
}; 

Viel Spaß! Michael/Hamburg

+0

Das hält es davon ab, eine Ausnahme zu werfen, was genial ist! Vielen Dank. Und wenn ich das Ergebnis für richtig oder falsch überprüfe, scheint das zuverlässig zu sein. Allerdings kann ich scheinbar nichts mit "Fehler" machen. Es ist immer "truthy", aber es scheint keine Eigenschaften zu geben, die ich verwenden kann, um den Fehler zu melden (was in meinem Testfall "bereits vorhanden" oder so ähnlich wäre). Also das Problem ist gelöst (vielen Dank), und jetzt habe ich nur ein kleines Rätsel. –

+0

Ich denke, dass createDirectoryAtPathWithIntermediateDirectoriesAttributesError immer wahr zurückgibt, wenn das angegebene Verzeichnis nach dem Aufruf verfügbar ist. Das einzige, was ich einen Fehler gefunden habe, war, eine Textdatei zu erstellen, die genauso heißt wie das Verzeichnis, das Sie erstellen wollen. – ShooTerKo

+0

Danke! Ich schätze es. –

Verwandte Themen