我有一个看起来像这样的plist,数量为81"字典"项目:
我有这个代码,它将pList读入newArray
NSArray *newArray = [[NSArray alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DukeCruiseControlTable" ofType:@"plist"]];
当我在调试器中查看newArray时,我得到了:
newArray具有正确数量的元素,因此它正在读取正确的文件。但是,不是包含每个元素的内容,而是仅显示元素的索引(例如[3])。
我做错了什么?
刚接触iOS时我想也许调试器只是向我展示了一个数组的索引,但当我使用下一个代码将数组读入另一个对象数组时,我得到一个错误,表明newArray元素是&# 34; [3]"或者索引是什么。
for (dukeperfPerfChartLine *object in newArray)
{
[self.perfTable addObject:object];
}
答案 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的回答相同。