dict数组pList仅返回Array的索引

时间:2014-05-19 03:15:11

标签: ios objective-c arrays dictionary plist

我有一个看起来像这样的plist,数量为81"字典"项目:

plist array of 81 dictionary items

我有这个代码,它将pList读入newArray

NSArray *newArray = [[NSArray alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DukeCruiseControlTable" ofType:@"plist"]];

当我在调试器中查看newArray时,我得到了:

newArray holds just indices

newArray具有正确数量的元素,因此它正在读取正确的文件。但是,不是包含每个元素的内容,而是仅显示元素的索引(例如[3])。

我做错了什么?

刚接触iOS时我想也许调试器只是向我展示了一个数组的索引,但当我使用下一个代码将数组读入另一个对象数组时,我得到一个错误,表明newArray元素是&# 34; [3]"或者索引是什么。

for (dukeperfPerfChartLine *object in newArray)
{
    [self.perfTable addObject:object];
}

2 个答案:

答案 0 :(得分:1)

我没有看到任何读取文件的问题,在调试器中它只会显示索引,你可以尝试在从文件读取之后打印newArray:

的NSLog(@"%@",newArray);

要阅读 newArray 中的词典,我想你应该试试这个:

<强> EDITED

for (NSDictionary *dict in newArray)
{
    NSArray *allKeys = [dict allKeys];
    for (NSString *key in allKeys)
    {
        NSLog(@"%@=%@",key,[dict objectForKey:key]); 
    }
}

希望它会有所帮助。

答案 1 :(得分:0)

@Rajeev对答案的评论,但仅作为格式化的答案。

使用不同枚举方法的另外两种方法:

使用快速枚举:

for (NSDictionary *dict in newArray) {
    for (NSString *key in dict) {
        NSLog(@"%@=%@",key,[dict objectForKey:key]);
    }
}

使用枚举块:

for (NSDictionary *dict in newArray) {
    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"%@=%@",key, obj);
    }];
}

这些结果与@Rajeev的回答相同。