[Résolu] Problème écriture dans .plist

iMacodeiMacode Membre
septembre 2013 modifié dans API UIKit #1

Bonjour,


 


J'ai beaucoup chercher sur internet une réponse à  mon problème mais en vain, c'est pourquoi je viens poster ici.


 


J'essaie de sauvegarder un login dans un .plist afin de le récupérer ailleurs dans mon application pour l'utiliser (récupération de données via un webservice qui utilise le login).


 


J'ai donc fait ceci :



NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@userData.plist];
dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
[dictionary setValue:checkLogin.text forKey:@login];
[dictionary writeToFile:path atomically:YES];

Le code ci-dessus ne change pas la valeur de "login" dans le userData.plist alors que si je l'écris en "dur" directement dans le .plist, j'arrive à  le lire et à  l'afficher.


 


Pourriez-vous me dire quelle est le problème du code ci-dessus ? Merci d'avance.


Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur

    Plusieurs problèmes :


     - Tu n'as pas le droit d'écrire autre part que dans la sandbox de l'application. Les applis iOS sont signées, C'est donc impossible d'écrire dans le bundle de l'application une fois celle-ci compilée et signée (et encore heureux !) Doc ici.


     - Pour faire ce que tu veux faire avec ton code, à  savoir stocker une simple donnée sur le disque pour la récupérer plus tard, tu as des systèmes bien plus adaptés, en particulier les NSUserDefaults.


  • JegnuXJegnuX Membre

    Comme dit Ali, tu a les NSUserDefaults pour stocker des petites données et préférences comme ça. Mais pour un login/mdp tu as surtout le Keychain qui chiffrera les données en question. C'est beaucoup plus sécurisé.


    L'API est peut-être un poil plus complexe à  utiliser, mais tu as des wrappers en Objective-C sur Github.


  • Je vous remercie pour vos réponses, je me renseigne de suite sur ce que vous me proposez.


  • Je reviens vers vous pour vous dire que je l'ai fait avec les NSUserDefaults. J'ai essayé comme l'a suggéré JegnuX mais ça ne marchait pas..


     


    En tout les cas maintenant je sauvegarde mon login et je peux le réutiliser ailleurs dans mon application.


     


    Merci beaucoup pour votre aide. :)


  • AliGatorAliGator Membre, Modérateur

    En effet si c'est un login/pass c'est dans la Keychain qu'il faut le sauver et pas dans les NSUserDefaults, sinon y'a des risques que des gens mal intentionnés puissent très facilement récupérer ces données (genre une sauvegarde iTunes non cryptée de l'iPhone par exemple qui permet de récupérer je pense le PLIST des UserDefaults, ou d'autres moyens du genre) alors qu'au moins avec la keychain c'est fait pour et sécurisé.


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