从 Plist 中提取数据到数组和字典

Posted

技术标签:

【中文标题】从 Plist 中提取数据到数组和字典【英文标题】:extract data from Plist to array and dictionary 【发布时间】:2010-04-19 15:00:38 【问题描述】:

我做了一个看起来像这样的 plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList 1.0.dtd">
<plist version="1.0">
<array>
<array>
    <dict>
        <key>Company</key>
        <string>xxx</string>
        <key>Title</key>
        <string>VP Marketing</string>
        <key>Name</key>
        <string>Alon ddfr</string>
    </dict>
    <dict>
        <key>Name</key>
        <string>Adam Ben Shushan</string>
        <key>Title</key>
        <string>CEO</string>
        <key>Company</key>
        <string>Shushan ltd.</string>
    </dict>
</array>
<array>
    <dict>
        <key>Company</key>
        <string>xxx</string>
        <key>Title</key>
        <string>CTO</string>
        <key>Name</key>
        <string>Boaz frf</string>
    </dict>
</array>
</array>
</plist>

现在我想提取这样的数据(键“名称”的所有“A”到一个部分,所有“B”“名称”到另一个部分):

NSString *plistpath = [[NSBundle mainBundle] pathForResource:@"PeopleData" ofType:@"plist"];
NSMutableArray *attendees = [[NSMutableArray alloc] initWithContentsOfFile:plistpath];


listOfPeople = [[NSMutableArray alloc] init];//Add items

NSDictionary *indexADict = [NSDictionary dictionaryWithObject:[[attendees objectAtIndex:0] objectForKey:@"Name"] forKey:@"Profiles"];


NSDictionary *indexBDict = [NSDictionary dictionaryWithObject:[[attendees objectAtIndex:1] objectForKey:@"Name"]  forKey:@"Profiles"];

[listOfPeople addObject:indexADict];
[listOfPeople addObject:indexBDict];

这是为了在分段的 tableView 中查看它们。

我知道问题出在这里:

NSDictionary *indexADict = [NSDictionary dictionaryWithObject:[[attendees objectAtIndex:0] objectForKey:@"Name"] forKey:@"Profiles"];

但我只是想不出如何正确地做到这一点。

谢谢。

【问题讨论】:

【参考方案1】:

您有一个包含字典数组的 plist。

NSDictionary *indexADict =  (NSDictionary *)[(NSArray *)[attendees objectAtIndex:0] objectAtIndex:0];

您请求的密钥(配置文件)在您的 plist 中不存在。构建一个新字典来保存 plist 中的现有字典是没有意义的。

如果您有字典数组(或任何键值编码兼容对象),您可以通过以下方式提取“名称”属性数组:

NSArray *names = [array valueForKey:@"Name"];

【讨论】:

谢谢,但它不应该是这样的: NSDictionary *indexADict = [NSDictionary dictionaryWithObject:[(NSArray *)[attendees objectAtIndex:0] objectAtIndex:0] forKey:@"Name"] ;最后,我只想获取字典的名称,以便在分段的 tableView 中查看它们,如下所示: NSDictionary *dictionary = [listOfPeople objectAtIndex:indexPath.section]; NSArray *array = [字典 objectForKey:@"Name"]; NSString *cellValue = [数组 objectAtIndex:indexPath.row]; cell.primaryLabel.text = cellValue; 编辑样式在评论中不起作用??我在下面发表了相同的评论

以上是关于从 Plist 中提取数据到数组和字典的主要内容,如果未能解决你的问题,请参考以下文章

想要从 iPhone 的 plist 中的字典数组中获取数据? [复制]

如何在 swift 中读取数组和字典的 plist

从 plist 中获取数组中的字典对象的问题

使用循环从 plist 的根级别获取字典数组并将其放入变量中

字典的 plist 或存储

加载plist文件数据的方法