sal...ie de warning !

tabliertablier Membre
août 2016 modifié dans Coin canapé & détente #1

Je ne trouve pas comment supprimer ce warning !


Dans un fichier de définition (.h) j'ai écrit:


#define garder @~/Library/Application Support/whatari


Puis dans le xx.m j'ai écris:


tempor = garder.stringByExpandingTildeInPath ;


Et je crée le dossier whatari


[[NSFileManager defaultManager] createDirectoryAtPath:tempor withInte.........etc


Là  pas de warning mais le dossier est créé à  l'adresse


/users/tablier/Library/Application\ Support/whatari


Donc, à  coté de "Application support" un dossier "Application\ Support" a été créé. Ce n'est ce que je veux.


 


Je modifie la définition initiale en:


#define garder @~/Library/Application\ Support/whatari


Là , le dossier whatari est bien créé dans "Application Support" mais j'ai un warning  et je ne vois pas comment l'enlevé:


tempor = garder.stringByExpandingTildeInPath ;             Unknown escape sequence '\ '


 

Comment aurais-je du faire pour avoir le dossier au bon endroit sans warning ?

Réponses

  • Alf1996Alf1996 Membre
    août 2016 modifié #2

    Le slash à  l'envers peut-être ?


     


    Il en faut peut-être deux, car le premier annule le caractère suivant ?


  • LeChatNoirLeChatNoir Membre, Modérateur

    let yourString = String(NSFileManager.defaultManager().URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask)[0])

    Non ?


  • J'aurais tendance aussi à  utiliser NSApplicationSupportDirectory.


  • LexxisLexxis Membre
    août 2016 modifié #5

    La première approche semble correcte pourtant. Les deux dossiers sont-ils visible depuis le Finder ?


    Pour la seconde approche je dirais qu'au final cela revient au même: le compilateur ne connait pas la séquence "\ " du coup il laisse uniquement l'espace.


  • les deux dossiers sont normalement invisibles. C'est l'Application Support du user que je cherche. Les librairies des users sont invisibles depuis 10.9 (peut-être). Je vais essayé ce que préconise Larme.


  • Comment as tu obtenu le chemin problématique ("/users/tablier/Library/Application\ Support/whatari") depuis le terminal ou autre ? 

  • Le chemin est facile à  obtenir. 


    1 j'utilise "Invisibility Toggler" et tout ce qui est caché devient visible.


    2 je pose sur la fenêtre du terminal ce dont je veux récupérer le chemin.


    3 copier / coller


     Et le tour est joué !


    Ici, comme les utilisateurs ne sont pas moi, j'ai remplacé "/users/tablier" par "~" dans le programme bien sur.


  • Dans ce cas si tu colles le chemin dans le terminal il est tout à  fait normal qu'un "\ " apparaisse. Lorsqu'un chemin contient un espace est utilisé dans un terminal il est tout simplement échappé sinon le terminal interpréterai cela comme séparateur d'arguments.


    Pour avoir le bon chemin utilise plutôt TextEdit en mode texte ou un autre éditeur de texte (SublimeText par ex).


     


    PS: Tu peux accéder au dossier Library depuis le finder avec le menu "Aller à " en maintenant la touche option appuyé.

  • tabliertablier Membre
    août 2016 modifié #10

    Lexxis: ce n'est pas le \  ajouter par le terminal qui me gène. Ce qui me gène, c'est que si le \ n'est pas présent dans ma définition, la méthode StringByExpendingTildeInPath  ajoute le \ entre Application et Support et le résultat est faux, mais il n'y a pas de warning. Et si le \ est présent dans la définition le résultat est  bon mais le compilateur renvoie un warning ! En gros, la méthode enlève le \ quand il existe et l'ajoute s'il n'est pas là  ! Pour résumé:


    define garder @~/Library/Application Support/whatari   Méthode->    /users/tablier/Library/Application\ Support/whatari  


    define garder @~/Library/Application\ Support/whatari  Méthode->   /users/tablier/Library/Application Support/whatari   +  Warning


  • Oui, j'ai bien compris quel était le problème. En fait ce que je soulignais dans mes posts précédent c'est que, a priori, une fois compilé, que tu ajoutes un "\ " ou non la chaine finale qui sera passée à  StringByExpendingTildeInPath sera "~/Library/Application Support/whatari" quoi qu'il arrive (un NSLog de la chaine suffit pour le vérifier) et donc que le problème se situe peut être ailleurs.


     


    Quoi qu'il en soit il est plus sur d'utiliser NSApplicationSupportDirectory pour obtenir le précieux dossier.


Connectez-vous ou Inscrivez-vous pour répondre.