[英]Traversing array of dictionaries of plist in iOS
我是iOS编程的新手,我正在遍历plist。 但是我无法访问标签中的单个记录。 也就是说,如果我只想访问“ Amul”的详细信息,那么在if条件下要写的内容
下面是我的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>
<dict>
<key>Email Address</key>
<string>ams@asd.com</string>
<key>Name</key>
<string>Amul</string>
<key>Phone Number</key>
<string>984756393</string>
</dict>
<dict>
<key>Email Address</key>
<string>cat@se.com</string>
<key>Name</key>
<string>Anoop</string>
<key>Phone Number</key>
<string>87453726</string>
</dict>
<dict>
<key>Email Address</key>
<string>per@se.com</string>
<key>Name</key>
<string>Bhagesss</string>
<key>Phone Number</key>
<string>7684947</string>
</dict>
</array>
</plist>
也正在读取数组中的所有数据,如下所示
NSArray *array=[[NSArray alloc]initWithContentsOfFile:filePath];
if (i<[array count]) {
NSLog(@"%@", [array objectAtIndex:i]);
NSString *strName=[[NSString alloc]initWithFormat:@"%@",[array
valueForKey:@"Name"]];
NSString *strPhone=[[NSString alloc]initWithFormat:@"%@",[array
valueForKey:@"Phone Number"]];
NSString *strEmail=[[NSString alloc]initWithFormat:@"%@",[array
valueForKey:@"Email Address"]];
lblName.text=strName;
lblPhone.text=strPhone;
lblEmail.text=strEmail;
i++;
}
现在,我应该提出什么条件,以便仅显示该记录,该记录的名称由我在文本字段中提供。 请帮忙...
在NSString上使用isEqualToString方法。 顺便说一句,您在NSArray中没有valueForKey方法! 如先前建议的那样,使用字典。 这是完整的代码。
NSArray *array=[[NSArray alloc]initWithContentsOfFile:filePath];
int i = 0;
while (i<[array count]) {
NSDictionary *dict = [array objectAtIndex:i];
if([[dict objectForKey:@"Name"] isEqualToString:@"Amul"])
{
lblName.text=strName;
lblPhone.text=strPhone;
lblEmail.text=strEmail;
break;
}
i++;
}
编辑:
在我看来,plist中的数据与您访问结果数据结构的方式不匹配。
尝试这样做:
if (i < [array count]) {
NSDictionary* dict = [array objectAtIndex:i];
if([[dict valueForKey:@"Name"] isEqualToString:@"Amul"]) {
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.