Ios iPhone编程,加载plist数据,访问它

Ios iPhone编程,加载plist数据,访问它,ios,iphone,search,sdk,plist,Ios,Iphone,Search,Sdk,Plist,我有以下形式的plist: 根目录(数组)--->第1项(字典)--->Sch(字符串) --->名称(字符串) ---->价格(数字) ---->第2项(词典)-->…与第1项相同 如何访问每一行(项目1至…)及其子行(Sch、名称等)?一次一个 我使用: NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *finalPath = [path stringByAppendingPathComponent:@"Data.p

我有以下形式的plist:

根目录(数组)--->第1项(字典)--->Sch(字符串) --->名称(字符串) ---->价格(数字) ---->第2项(词典)-->…与第1项相同

如何访问每一行(项目1至…)及其子行(Sch、名称等)?一次一个

我使用:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"];
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];   
加载文件。我应该如何访问每个孩子


我想做的是,我有一条NSString*消息,我想做的是搜索整个plist中匹配的字符串并显示整个项1。有什么建议吗?

从plist初始化集合时,类型是根级别的对象。因此,您不会初始化字典,而是初始化如下所示的数组:

NSArray *plistData = [[NSArray arrayWithContentsOfFile:finalPath] retain];
然后您可以这样访问它:

NSString *sch; 
NSString *name;
NSString *price;
for (NSDictionary *aDict in plistData) {
    sch = [aDict objectAtKey:"Sch"];
    name = [aDict objectAtKey:"Name"];
    price = [aDict objectAtKey:"price"];
    //.. do whatever
}
是指向讨论的链接,该讨论提供了一个非常好的示例,说明了如何访问数据,以及在某些情况下哪种类型的存储方案更有利@TechZen的解决方案是正确的,我只是认为这个问题会增加额外的资源。希望这有帮助