【问题标题】:Get plist into array将 plist 放入数组中
【发布时间】:2011-05-17 16:10:09
【问题描述】:

我见过很多类似的问题,但对我没有任何帮助。我需要将 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 上使用相同的代码,我可以将其作为源代码打开并将其包含在数组标签中。

【问题讨论】:

  • 问。这个plist和原来的有区别吗?发布您尝试解析的 plist 以供我们查看。

标签: iphone nsmutablearray plist


【解决方案1】:

您说您有一个 plist,它是一个包含字典数组的字典,但您尝试从包中读取文件,就好像它是一个数组一样。尝试改用NSDictionary-initWithContentsOfFile:

数组应该在 plist 的字典中有一个键,类似于以下内容:

...
<dict>
    <key>Teams</key>
    <array>
        <dict>
            ...
        </dict>
        ...
    </array>
</dict>

所以提取数组应该是向 plist 字典询问带有键 Teams 的对象:

teamsArray = [ plistDictionary objectForKey: @"Teams" ];

【讨论】:

  • 这似乎行得通。但是我该如何从字典中提取数组呢?
【解决方案2】:

放轻松:)

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);
        }
    }
}

【讨论】:

  • 不确定“放轻松”是否足够解释。
猜你喜欢
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多