Ios 如何从plist检索数据

Ios 如何从plist检索数据,ios,nsarray,plist,nsdictionary,Ios,Nsarray,Plist,Nsdictionary,嗨,我有一个以下格式的列表 我想根据类别id对这些书籍进行排序。我有一个包含所有类别id的数组“TotalCategory”(例如:cat1、cat2..),我想打开下面的plist,检查每本书及其类别id是否匹配。如果我拥有的类别id与给定书籍的类别id匹配,那么我想将该类别id和书籍id(bid)添加到新词典中。是否可能 NSDictionary *booksPlist = [[NSDictionary alloc] initWithContentsOfFile:path]; NSArray

嗨,我有一个以下格式的列表

我想根据类别id对这些书籍进行排序。我有一个包含所有类别id的数组“TotalCategory”(例如:cat1、cat2..),我想打开下面的plist,检查每本书及其类别id是否匹配。如果我拥有的类别id与给定书籍的类别id匹配,那么我想将该类别id和书籍id(bid)添加到新词典中。是否可能

NSDictionary *booksPlist = [[NSDictionary alloc] initWithContentsOfFile:path];
NSArray *categoryId=[[booksPlist objectForKey:@"catlist"]valueForKey:@"cid"];
NSLog(@"%@",categoryId);

// getting category list

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *allBooksPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Allbooks.plist"];
NSDictionary *allBookPlist=[[NSDictionary alloc]initWithContentsOfFile:allBooksPath];

NSArray *bookid=[[allBookPlist objectForKey:@"listbook"]valueForKey:@"bid"];
NSString *s=[[[allBookPlist objectForKey:@"listbook"]objectForKey:@"cate" ]valueForKey:@"categories"];  //// this line shows exception


 NSLog(@"%@",s); 
///我想要这个:::
我想和我一起检查分类id,如果分类id匹配,则检查每本书中的分类id,然后检索该图书id(出价),即它

您的请求不是很清楚,但我发现您的代码存在一些问题

首先,不要将
NSDictionary
-objectForKey:
方法与非正式协议
NSKeyValueCoding
valueForKey:
方法混淆

后者用于
KVC
访问,最好不要在不知道的情况下将它们混合使用。它可能起作用,但在某些情况下也可能爆炸。 坚持使用
objectForKey:
或者更好,您可以使用现代的订阅语法

[dict objectForKey:@"whatever"];
相当于

dict[@"whatever"];

也就是说,让我们面对你的具体问题。 首先,
listbook
是一个数组,所以您不能这样做

[[allBookPlist objectForKey:@"listbook"]valueForKey:@"bid"];
您需要首先访问数组元素,所以在现代语法中应该这样做

NSString * bookId = allBookPlist[@"listbook"][0][@"bid"];
获取第一个元素的
bid
。如果要收集它们,只需在数组上迭代即可

NSArray * books = allBookPlist[@"listbook"];
NSMutableArray * bookIds = [@[] mutableCopy]
for (NSDictionary * book in books) {
     [bookIds addObject:book[@"bid"]];
}

类似的方法可以用于从每本书中获取类别。

这不是一个Xcode问题。我使用Xcode这样做有帮助吗?@adaam:感谢您的帮助,但我需要一个代码,please@Naveen我知道,但这仍然不是一个Xcode问题。这是一个问答网站,不是一个我们为你工作的网站。说出你的疑问,有人会回答的。