来自plist的嵌套NSDictionary

时间:2010-05-17 10:45:23

标签: iphone plist nsdictionary

我有一个带有主要NSDictionary的plist,其中的键是日期。 对于每个日期,我都有一个NSDictionary,其中键是(比方说)类别。 每个类别都包含键和值。

我想创建两个变量,每个变量都包含正确的NSDictionary:

NSDictionary *dates = ?
NSDictionary *Categories = ?

以下是我的帖子,请帮助理解如何做到这一点。

**注意:我知道如何从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>

我非常感谢任何帮助,因为我搜索了论坛的历史记录,发现没有任何内容符合我的情况。

谢谢!

1 个答案:

答案 0 :(得分: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"];
 }