2010-05-17 70 views
2

我有一个plist,与主NSDictionary,其中的键是日期。 对于每一个日期,我有一个NSDictionary,其中的键是(比方说)类别。 每个类别都包含密钥和值。嵌套从plist NSDictionary

我想创建2个变量,每个将持有正确的NSDictionary:

NSDictionary *dates = ? 
NSDictionary *Categories = ? 

下面是我的plist,请帮助了解如何应该这样做。

**注:我知道如何分配第一个日期字典从plist ... 只是坚持与类别。

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

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> 

任何帮助将不胜感激,因为我已经搜查了论坛的历史,发现我的方案相匹配什么。

谢谢!

回答

2

您应该将值标记为数组,因此您可以简单地遍历它们。

<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> 

代码:

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

嘿,说实话,加入阵列只是做我很难读/理解, 让我们回到我的plist的秒, 我只是想有如下: 1 NSDictionary的所有日期 1的NSDictionary所有类别 然后我可以问,[类别objectForKey:@“键1”],我会得到值1, 任何想法? – 2010-05-17 15:24:59

+0

问题是,你有几个“类别” - 词典,我认为它可能会导致问题,如果你把它们混合到一个词典。另一方面:在我的建议中,[catgories objectAtIndex:0]有什么问题? – cem 2010-05-17 15:46:04

+0

嘿unset,我明白了你的观点,你是对的, 我会使用[categories objectAtIndex:row]并且会在主Dictionary中循环。 感谢您的帮助 – 2010-05-18 14:28:09