从 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 中的字典数组中获取数据? [复制]