从Plist文件中解析数组字典

时间:2015-06-10 19:38:35

标签: ios objective-c nsarray nsdictionary

我正在尝试使用特定的数据布局。我们使用plist文件,它按以下方式设置: 根(词典):
- 1.1(阵列)
- 项目0(字典)
---标题
---图标
- 第1项(字典)
---标题
---图标
- 1.2(阵列)
- 项目0(字典)
---标题
---图标

来自plist的这些信息被解析为一个字典,该字典注销如下:

{
    "1.0" =     (
                {
            detail = "Detail 0";
            icon = "Pull to Refresh";
            title = "Item 0";
        },
                {
            detail = "More easily refresh a subscription or playlist.";
            icon = "Pull to Refresh";
            title = "Pull to Refresh";
        }
    );
    "1.1" =     (
                {
            detail = "Create custom stations of your favorite podcasts.";
            icon = Stations;
            title = "Custom Stations";
        }
    );
}

我想要找出的是子阵列中的项目数。例如,有两个子阵列,一个用于1.1,一个用于1.2。我想从这些数组获得dictionaires的数量?

是否有快速访问方式。我试图完成一个for循环并对它们进行计数,但是我收到了NSCFString错误,好像我的数据不正确一样?

2 个答案:

答案 0 :(得分:0)

既然你已经提到自己尝试for循环,我不知道这实际上是你正在寻找的那种答案,但是为了这个非常具体的目的(即你确定输入字典总是那种你所描述的结构)沿着这些方向应该做的事情:

- (NSUInteger)numberOfItemsInSubArraysOfDictionary:(NSDictionary *)dict
{
    NSUInteger count = 0;
    for(NSArray *array in dict.allValues) {
        if ([array isKindOfClass:[NSArray class]]) {
            count += array.count;
        }
    }
    return count;
}

答案 1 :(得分:0)

您可以尝试这样的事情:

for (NSString *key in [dictionary allKeys]) {
    NSLog(@"Number of dictionaries for %@: %d", key, [dictionary[key] count]);
}

此循环的输出为:

Number of dictionaries for 1.0: 2
Number of dictionaries for 1.1: 1