[Résolu] Extraire un NSData d'un NSDictionary

wiskywisky Membre
avril 2006 modifié dans API AppKit #1
Hello tous le monde,

Je vous embête avec mes questions  :)beta:

J'ai un petit problème de type de variable, j'ai créer un fichier PLIST dans lequel il y a des données (lors de l'enregistrement c'était des NSData). J'aimerai les récupérer mais la fonction objectForKey: me retourne un NSString à  la place du NSData.
Comment faire pour avoir un NSData?

Réponses

  • AliGatorAliGator Membre, Modérateur
    09:40 modifié #2
    Tu as essayé juste un casting ?
    [tt]NSData* datas = (NSData*)[monDicoPlist objectForKey: @myDatas];[/tt]
  • wiskywisky Membre
    09:40 modifié #3
    C'est ce que je vient de faire, il n'arrive pas à  utiliser correctement le NSData qui suit.
    Si non, comment faire pour bien gérer les NSData lors de l'enregistrement puis la lecture dans un fichier PLIST??
  • Eddy58Eddy58 Membre
    09:40 modifié #4
    C'est curieux que ce ne soit pas enregistré sous la forme d'un NSData ? ??? Sinon tu as la méthode - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding de NSString pour faire ta conversion.
  • BruBru Membre
    09:40 modifié #5
    dans 1140111697:

    Tu as essayé juste un casting ?
    [tt]NSData* datas = (NSData*)[monDicoPlist objectForKey: @myDatas];[/tt]


    Mon dieu... un cast ne fait que déguiser un type de pointeur en un autre. En aucun cas il ne transforme l'objet lui-même !

    .
  • BruBru Membre
    09:40 modifié #6
    dans 1140111466:

    Je vous embête avec mes questions


    Non...


    dans 1140111466:

    J'ai un petit problème de type de variable, j'ai créer un fichier PLIST dans lequel il y a des données (lors de l'enregistrement c'était des NSData). J'aimerai les récupérer mais la fonction objectForKey: me retourne un NSString à  la place du NSData.
    Comment faire pour avoir un NSData?


    Y'a comme une couille dans ton prog.
    J'ai toujours récupéré des "datas" dans un plist dans un objet NSData.

    Le simple exemple ci-dessus va te le démontrer :
    <br />{<br />	NSData *dat=[@&quot;test&quot; dataUsingEncoding:0];<br />	NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:dat, @&quot;dat&quot;, nil];<br />	[dic writeToFile:@&quot;/tst.plist&quot; atomically:NO];<br /><br />	dic=[NSDictionary dictionaryWithContentsOfFile:@&quot;/tst.plist&quot;];<br />	NSLog(@&quot;%@&quot;, [[dic objectForKey:@&quot;dat&quot;] className]);<br />}<br />
    


    la log me renvoie :
    [tt][Session started at 2006-02-16 19:58:07 +0100.]
    2006-02-16 19:58:07.915 tst-data-plist[1936] NSCFData
    [/tt]

    .
  • wiskywisky Membre
    09:40 modifié #7
    C'est ce que j'ai. J'ai trouvé pourquoi ça ne marchait pas. C'était mon utilisation du NSData qui était foireuse. Merci quand même ;)
  • AliGatorAliGator Membre, Modérateur
    09:40 modifié #8
    dans 1140115920:

    Mon dieu... un cast ne fait que déguiser un type de pointeur en un autre. En aucun cas il ne transforme l'objet lui-même !
    Je sais bien je te rassure !!
    Mais justement moi aussi ça m'étonnais que son objectForKey ne récupère pas un NSData* s'il l'avait enregistré en tant que NSData.
    Donc j'ai pensé que c'était le mauvais type (mais les bonnes données) qui étaient renvoyées, d'où mon essai :)
Connectez-vous ou Inscrivez-vous pour répondre.