2010-05-17 4 views
2

J'ai un plist, avec NSDictionary principal, dans lequel ses clés sont des dates. Pour chaque date, j'ai un NSDictionary dans lequel les clés sont (disons) des catégories. Chaque catégorie contient des clés et des valeurs.NSDictionary imbriqué à partir de plist

Je voudrais créer 2 variables que chaque détiendront les NSDictionary correcte:

NSDictionary *dates = ? 
NSDictionary *Categories = ? 

est Ci-dessous mon plist, s'il vous plaît aider à comprendre comment cela devrait se faire.

** Note: Je sais comment assigner le premier dictionnaire de dates du plist ... juste coincé avec les catégories.

NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path]; 
self.dates = dict; 
[dict release]; 

Le plist:

<dict> 
    <key>2010-05-08</key> 
    <dict> 
     <key>Catergory1</key> 
     <dict> 
      <key>key1</key> 
      <string>value1</string> 
      <key>key2</key> 
      <string>value2</string> 
      <key>key3</key> 
      <string>value3</string> 
     </dict> 
     <key>Catergory2</key> 
     <dict> 
      <key>key1</key> 
      <string>value1</string> 
      <key>key2</key> 
      <string>value2</string> 
      <key>key3</key> 
      <string>value3</string> 
     </dict> 
    <key>2010-01-02</key> 
    <dict> 
     <key>Catergory1</key> 
     <dict> 
      <key>key1</key> 
      <string>value1</string> 
      <key>key2</key> 
      <string>value2</string> 
      <key>key3</key> 
      <string>value3</string> 
     </dict> 
     <key>Catergory2</key> 
     <dict> 
      <key>key1</key> 
      <string>value1</string> 
      <key>key2</key> 
      <string>value2</string> 
      <key>key3</key> 
      <string>value3</string> 
     </dict> 
    </dict> 
</dict> 
</plist> 

Toute aide serait grandement apprécié, comme je l'ai cherché sur l'histoire du forum et n'a rien trouvé qui correspond à mon scénario.

MERCI!

Répondre

2

Vous devez baliser les valeurs sous la forme de tableaux, vous pouvez donc simplement les parcourir.

<plist version="1.0"> 
<dict> 
<key>dates</key> 
<array> 
    <dict> 
    <key>date</key> 
    <date>2010-05-17T12:40:32Z</date> 
    <key>categories</key> 
    <array> 
    <dict> 
    <key>key</key> 
    <string>value</string> 
    </dict> 
    <dict> 
    <key>key</key> 
    <string>value</string> 
    </dict> 
    </array> 
    </dict> 
    <dict> 
    <key>date</key> 
    <date>2010-05-17T12:40:32Z</date> 
    <key>categories</key> 
    <array> 
    <dict> 
    <key>key</key> 
    <string>value</string> 
    </dict> 
    <dict> 
    <key>key</key> 
    <string>value</string> 
    </dict> 
    </array> 
    </dict> 
</array> 
</dict> 
</plist> 

code:

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:pathToFile]; 
for (NSDictionary *date in [dict valueForKey:@"dates"]) { 
    NSArray *catgories = [date valueForKey:@"categories"]; 
} 
+0

Hey, honnêtement, en ajoutant des tableaux juste fait qu'il est difficile pour moi de lire/comprendre, revenons à mon plist pour une seconde, je veux juste avoir ce qui suit: 1 NSDictionary avec toutes les dates 1 NSdictionary avec toutes les catégories alors je pourrais demander, [catégorie objectForKey: @ "Key1"] et je vais obtenir Value1, des idées? –

+0

Le problème est, que vous avez plusieurs "Catégorie" -Dictionnaires, et je pense que cela pourrait causer des problèmes, si vous les mélanger à un seul dictionnaire. D'autre part: Quel est le problème avec '[catgories objectAtIndex: 0]' dans ma suggestion? – cem

+0

Hey unset, j'ai obtenu votre point, et vous avez raison, je vais utiliser les [catégories objectAtIndex: ligne] et boucle dans le dictionnaire principal. Merci pour votre aide –

Questions connexes