Comment écrire des données dans plist?
J'ai créé enregistrer.plist dans un dossier de ressources. J'ai écrit des données dans la directement (sans utiliser de codage). Je suis capable de lire les données, mais je ne suis pas capable d'écrire du code pour le même enregistrer.plist. Par l'utilisation de code suivant, je suis en train d'écrire les données, mais il est stocké dans mon .app plist.
Le code est ici
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"save" ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSMutableDictionary *temp = (NSMutableDictionary *)[NSPropertyListSerialization
propertyListFromData:plistXML
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format errorDescription:&errorDesc];
if (!temp) {
NSLog(errorDesc);
[errorDesc release];
}
// [temp setValue:@"123" forKey:@"line1"];
// [temp writeToFile:plistPath atomically: YES];
//Reading data from save.plist
NSLog([temp objectForKey:@"name"]);
NSLog([temp objectForKey:@"wish"]);
NSNumber *num=[temp valueForKey:@"roll"];
int i=[num intValue];
printf("%d",i);
//writitng the data in save.plist
[temp setValue:@"green" forKey:@"color"];
[temp writeToFile:plistPath atomically: NO];
NSMutableDictionary *temp1 = (NSMutableDictionary *)[NSPropertyListSerialization
propertyListFromData:plistXML
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format errorDescription:&errorDesc];
NSLog([temp objectForKey:@"color"]);
Je veux que les données que je veux écrire doivent être écrits en enregistrer.plist seulement ce qui est stocké dans les références. Je suis de nouveau avec ce concept. Donc si quelqu'un sait-il s'il vous plaît aider moi.
Merci à l'avance.
🙂
source d'informationauteur Jyotsna
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si j'ai bien compris votre question, mais si vous voulez écrire dans un .plist au sein de votre .app bundle vous avez probablement fait quelque chose de mal. Si vous souhaitez stocker les préférences, vous devriez envisager d'utiliser NSUserDefaults.
Si vous voulez vraiment modifier un forfait .plist - voici un code:
Mise à jour:
Nate Flink a souligné que certains des NSFileManager méthodes utilisées ci-dessus sont obsolètes.
Il a posté une réponse avec le remplacement des méthodes ci-dessous:
https://stackoverflow.com/a/12428472/100848
Version mise à jour de l'original, par exemple impressionnant par weichsel (merci!). Xcode jeta un couple de mises en garde dont l'une est une méthode dépréciée sur NSFileManager. Mise à jour ici avec les méthodes obsolètes de l'iOS 5.1
Lorsque vous générez l'application, il faudra créer un fichier exécutable "appName.app" et tous les fichiers sont intégrées dans le bundle. Par conséquent, vous ne pouvez pas accéder au dossier de ressources lorsque l'application est en cours d'exécution, car toutes les données sont dans l'ensemble(pas dans un dossier).
Toutefois, vous pouvez accéder à un dossier temp qui contient des informations de l'application.
Vous pouvez trouver le dossier temp ici:
Ouvrez le finder--cliquez sur votre nom d'utilisateur(sous PLACES)--Bibliothèque--Application--Simulateur d'iPhone,--User--Application--(ici vous pouvez trouver tous les dossiers temp de votre iPhone apps)
Vous pouvez accéder à ce dossier temp:
Si vous nommez votre fichier enregistrer.plist, vous pouvez accéder comme cela:
Ensuite, il vous suffit d'enregistrer votre fichier dans ce chemin d'accès et il apparaîtra dans le dossier temp nommé "Documents_save.plist".
*Notez que le dossier temp du nom varie à chaque fois que vous exécutez l'application.
Recommander un livre pour vous: 《Début de Développement iPhone--Explorer le SDK de l'iPhone》. Dans le Chapitre 11, vous pouvez trouver ce que vous voulez.
De résumer quelques-uns des autres réponses:
Vous êtes le problème, c'est que vous êtes en train d'écrire le fichier dans le dossier qui contient votre application. Ce dossier n'est pas accessible en écriture lors de l'exécution. Tout ce que vous faites est très bien, vous avez juste besoin de choisir un autre emplacement pour écrire votre fichier.
Vous pouvez utiliser le NSSearchPathForDirectoriesInDomains fonction pour trouver un dossier approprié pour ce type de données. (Comme l' @dossier"Documents".)
essayez ceci:
de "Cacao de Programmation".
vous devez copier votre fichier plist dans le répertoire de documents...
parce que vous ne pouvez pas enregistrer quoi que ce soit sans l'enregistrer dans le fichier de document....quand vous l'avez copié permettra d'écrire/modifier sur plist