NSWorkspace iconForFile(Type)

19:51 modifié dans API AppKit #1
Hello,
Je cherche à  récupérer l'icône par rapport à  l'extension d'un fichier (comme tout bon téléchargeurs).
Mic m'a mis sur la voie du NSWorkspace.. J'ai donc trouver la méthode qui renvoie une NSImage : iconForFile:(NSString *)fullpath
il y a aussi iconForFileType:(NSString *)fileType

J'ai donc testé 2 méthodes :
<br />[[NSWorkspace sharedWorkspace] iconForFileType:[[[NSFileWrapper alloc] initWithPath:[helpDico objectForKey:@&quot;fileURL&quot;]] fileType]]
(un code qui me semble pas très correct :/ quoi qu'il sen soit, ça me retourne bien une image mais à  l'allure d'un fichier inconnue - feuillet blanc).

[[NSWorkspace sharedWorkspace] iconForFile:[helpDico objectForKey:@&quot;fileURL&quot;]]

Dans la doc il est bien dit "fullPath" pour cette méthode, j'ai donc juger bon de laisser l'url complète. Mais même en utilisant fileWrapper pour n'obtenir que le nom du fichier, ça ne marche pas, ça me retourne quand même une icone d'allure "inconnue"

Merci d'avance ;)

Réponses

  • 19:51 modifié #2
    Tiens j'ai aussi une question (autant en profiter)
    Comment faire pour récupérer la valeur d'un NSNumber d'un dictionary en un Float ?
    j'ai fait
    [dico setObject:[[NSNumber alloc] initWithFloat:monFloat] forKey:@&quot;bytes&quot;];
    


    mais pour récupérer :
    float bytes;<br />bytes = [dico objectForKey:@&quot;bytes&quot;];<br />
    

    et bien entendu, ça m'a pas étonné de voir "Invalid assignement"
  • amnesicamnesic Membre
    19:51 modifié #3
    dans 1118907586:

    et bien entendu, ça m'a pas étonné de voir "Invalid assignement"


    bytes = [[dico objectForKey:@bytes] floatValue];

    devrait mieux marcher ;)
  • juin 2005 modifié #4
    Juste une petite remarque: tu n'es pas dans une conversation où tu es avec un grand spécialiste du cocoa pour un temps limité, donc les "autant en profiter" n'ont pas de sens ici. Si ta question sort du cadre du sujet, tu en crées un nouveau, ça facilitera les recherches pour ceux qui chercheront... Et si tu te poses deux questions en écrivant le premier message, tu crées deux sujets différents.

    EDIT: en plus la question a déjà  été posée...
  • 19:51 modifié #5
    Dsl renaud c'était pour éviter qu'après on me fasse la remarque "tu crée plein de Topic partout" et j'oubli tout le temps d'effectuer une recherche :( Vais mettre ça sur mon post-it dashboard comme ça j'oublierai pas :p
    Encore dsl et merci ;)
  • 19:51 modifié #6
    Il n'y a aucun mal à  créer des sujets, pour peu que la question apporte quelque chose par rapport à  ce qui a été posé avant. Par contre, il vaut mieux prolonger un sujet existant quand la question a déjà  été posée, et que la réponse est jugée incomplète.

    Bon ceci dit, pour ta question principale il ne faut pas mettre des URLs pour les méthodes que tu appelles, les règles ne sont pas les mêmes:
    nom de dossier: /My Folder
    en mode URL: file:///My%20Folder
    Donc la méthode ne peut pas marcher. Pour iconForFileType: tu ne dois mettre que l'extension, pas le chemin complet (il y a une méthode de NSString qui ne donne que l'extension, mais je te laisse la chercher).
  • 19:51 modifié #7
    Ok merci beaucoup Renaud 
    Sinon, en faisant une recherche sur iconForFile j'ai trouvé un sujet (et un seul) qui correspondait.
    J'ai testé :
    Récupérer le NSFileType d'un fichier provenant d'une URL.. Marche tjrs pas.
    Je vais donc récupérer que l'extension comme tu m'a dis de faire..
    Meric encore
  • 19:51 modifié #8
    Ok j'ai trouvé (gros merci Renaud !), je met la réponse si jamais quelqu'un d'autre serait amener un jour à  chercher la même méthode que celle que je cherchais :)

    Pour obtenir l'icône (NSImage) correspondant au type de fichier :
    <br />NSString *fullPath;<br />NSImage *fileTypeIcon;<br />fullPath = [NSString stringWithFormat:@&quot;Monchemin/monfichier.dmg&quot;];<br />fileTypeIcon =  [[NSWorkspace sharedWorkspace] iconForFileType:[fullPath pathExtension]];<br />
    

  • elfelf Membre
    19:51 modifié #9
    Tiens... Eaglelouk... J'aurais pas pensé de retrouver ici :P
Connectez-vous ou Inscrivez-vous pour répondre.