我见过很多类似的问题,但没有什么对我有用。我需要将我的plist的内容放入NSMutableArray。
我的plist是一个包含1个数组的字典。该数组有多个词典。我在另一个应用程序中使用了相同的代码并且工作正常:
NSString *path = [[NSBundle mainBundle] pathForResource:@"TeamsData" ofType:@"plist"];
NSMutableArray *temp = [[NSMutableArray arrayWithContentsOfFile:path] retain];
NSLog(@"TEMP: %@", temp);
data = [NSMutableArray arrayWithArray:[[temp objectAtIndex:0] objectForKey:@"Teams"]];
temp返回NULL但我无法弄清楚原因。有什么想法吗?
更新
我实际上发现了为什么我的代码在一个应用程序中工作而不是另一个应用程序。在应用程序中它确实有效,当我打开plist作为源时,整个plist被包含在一个数组中。当我在标准xcode plist编辑器中查看时,这并没有显示出来。因此,为了在新plist上使用相同的代码,我可以将其作为源打开并将其封装在数组标记中。
答案 0 :(得分:2)
你说你有一个plist,它是一个包含字典数组的字典,但是你试图从包中读取文件,就好像它是一个数组一样。请尝试使用NSDictionary
的{{1}}代替。
数组应该在plist的字典中有一个键,如下所示:
-initWithContentsOfFile:
因此,提取数组应该是向plist字典询问具有键...
<dict>
<key>Teams</key>
<array>
<dict>
...
</dict>
...
</array>
</dict>
的对象:
Teams
答案 1 :(得分:0)
放轻松:)
NSString *path = [[NSBundle mainBundle] pathForResource:@"menuConfig" ofType:@"plist"];
NSDictionary* amountData = [NSDictionary dictionaryWithContentsOfFile:path];
NSMutableArray *teamsArray=[amountData objectForKey: @"InfoArrays" ];
for(amountData in teamsArray)
{
NSMutableArray *title = [amountData objectForKey:@"Exercesis"];
for(amountData in title)
{
NSMutableArray *ExercisesDetails = [amountData objectForKey:@"ExercisesDetails"];
for(amountData in ExercisesDetails)
{
NSString *exerciseDetail=[amountData objectForKey:@"exerciseDetail"];
NSLog(@"%@",exerciseDetail);
}
}
}