【问题标题】:nested NSDictionary from plist来自 plist 的嵌套 NSDictionary
【发布时间】:2010-05-17 10:45:22
【问题描述】:

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

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

NSDictionary *dates = ?
NSDictionary *Categories = ?

以下是我的plist,请帮助理解应该如何完成。

**注意:我确实知道如何从 plist 中分配第一个日期字典... 只是坚持使用类别。

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

列表:

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

任何帮助都将不胜感激,因为我搜索了论坛的历史并没有发现任何符合我的情况的内容。

谢谢!

【问题讨论】:

    标签: iphone plist nsdictionary


    【解决方案1】:

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

    <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"];
     }
    

    【讨论】:

    • 嘿,老实说,添加数组只是让我难以阅读/理解,让我们回到我的 plist 几秒钟,我只想拥有以下内容:1 NSDictionary 与所有日期 1 NSdictionary 与所有类别然后我可以问,[category objectForKey:@"Key1"] 我会得到 Value1,有什么想法吗?
    • 问题是,你有几个“类别”-字典,我认为如果你将它们混合到一个字典中,它可能会导致问题。另一方面:我的建议中[catgories objectAtIndex:0] 有什么问题?
    • 嘿 unset,我明白你的意思,你是对的,我将使用 [categories objectAtIndex:row] 并在主字典中循环。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多