2015-07-13 2 views
0

J'écris une plist à partir d'un 'NSMutableDictionary'. Cela fonctionne bien. Mais quand je veux ajouter au fichier, la nouvelle entrée remplace la première entrée.iOS - Ajout d'éléments à plist

Ce que je voudrais est quelque chose comme ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<names> 
<name1> 
    <key> 
     firstname 
    </key> 
    <value> 
     mememememe 
    </value> 
    <key> 
     lastname 
    </key> 
    <value> 
     mememememe 
    </value> 

</name1> 
<name2> 
    <key> 
     firstname 
    </key> 
    <value> 
     mememememe 
    </value> 
    <key> 
     lastname 
    </key> 
    <value> 
     mememememe 
    </value> 

    </name2> 
</names> 
Here's my code so far: 



    NSString *filename = [documents stringByAppendingPathComponent:@"faves.plist"]; 
    NSMutableDictionary *loadedMiscDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filename]; 

NSArray *directories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documents = [directories firstObject]; 

    NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; 
    [tempDict setValue:firstNameString forKey:@"firstname"]; 
    [tempDict setValue:secondNameString forKey:@"secondName"]; 

    [loadedMiscDictionary addEntriesFromDictionary:tempDict]; 
    [loadedMiscDictionary writeToFile:filename atomically:YES]; 

S'il vous plaît laissez-moi savoir ce que je fais mal. TIA

MISE À JOUR

J'ai changé mon extrait de code ci-dessus ..

+0

Avez-vous utilisé ma réponse –

+0

Non , la réponse n'est pas encore complète. –

+0

signifie ce que vous voulez dire Je ne comprends pas votre problème. est-il besoin d'un code pour cela ou autre chose? –

Répondre

0

vous devez utiliser un clic droit + Ajouter une ligne pour la catégorie supérieure et pour les sous-catégories utiliser signe + pour ajouter nouveau dans le fichier plist

+0

Merci d'avoir répondu, mais j'ai besoin que ce soit un plist dynamique. –

+0

Si je l'ai bien, si vos clés sont les mêmes, il sera prioritaire. Vous devez avoir des clés différentes pour chaque objet. –

+0

Pour améliorer votre code plus. 1. Pour la première fois car il n'y a pas de fichier data/plist possible, vérifiez-le en vérifiant le nombre de dictionnaire ([loadedMiscDictionary count] == ​​0) si vrai puis ajoutez les données du dictionnaire de votre application directement dans le fichier. 2.if false alors utilisez [loadedMiscDictionary addEntriesFromDictionary: tempDict]; ajouter de nouvelles entrées et [loadedMiscDictionary setDictionary: tempDict]; pour la mise à jour ancienne fois. –

1

Votre code remplace les anciennes entrées de la plist. Vous n'allez pas trouver les entrées du fichier plist dans le dictionnaire. Il suffit de créer un nouveau dictionnaire ajouter de nouvelles entrées et remplacer l'ancien fichier.

  • récupérer les données de fichier plist
  • stockés dans NSMutableDictionary ou NSMutableArray
  • Ajouter de nouvelles entrées dans ce dict. ou le tableau
  • A la fin, obtenez l'emplacement actuel du fichier et stocké ce dict nouvellement créé. ou un tableau qui contient des entrées anciennes et nouvelles.

je l'espère vous aide