2016-07-12 1 views
2

J'utilise les éléments suivants JXA (JavaScript Automation) Code sur OS/X 10.11.5:JXA NSFileManager createDirectoryAtPathWithIntermediateDirectoriesAttributesError exception

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

je reçois une erreur lors de l'exécution de ce, bien que il crée réellement le dossier. Voici l'erreur:

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

A en juger par le fait que le dossier est effectivement créé, et le texte du message d'erreur, je suppose que le problème est avec le paramètre « attributs », ce qui est nul (néant) . Je suppose qu'il crée le dossier, puis va assigner les attributs, et c'est quand il échoue.

Quelqu'un at-il des idées pour résoudre ce problème? Je n'ai eu aucune difficulté à appeler les autres méthodes NSFileManager de JXA, y compris celles auxquelles je transmets des valeurs booléennes et/ou null, donc cela a été tronqué.

Appréciez toute aide.

Répondre

2

désolé, Je n'ai pas beaucoup de temps maintenant, alors voici une solution rapide qui fonctionne très bien ici:

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

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

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

Amusez-vous! Michael/Hamburg

+0

Cela l'empêche de lancer une exception, ce qui est génial! Merci. Et si je vérifie le résultat pour vrai ou faux, cela semble être fiable. Cependant, je n'arrive pas à faire quoi que ce soit avec "erreur". C'est toujours "vrai", mais il ne semble pas y avoir de propriétés que je puisse utiliser pour signaler l'erreur (ce qui serait "Déjà existant" ou quelque chose comme ça, dans mon cas de test). Donc le problème est résolu (merci beaucoup), et maintenant j'ai juste un petit puzzle. –

+0

Je pense que le createDirectoryAtPathWithIntermediateDirectoriesAttributesError renvoie toujours vrai si le répertoire donné est disponible après l'appel. La seule chose que j'ai trouvé pour lancer une erreur était de créer un fichier texte nommé de la même manière que le répertoire que vous voulez créer. – ShooTerKo

+0

Merci! Je vous en suis reconnaissant. –