我正在尝试搜索plist,查找是否为真。 这是我的plist。
plist的图片:http://imgur.com/24vtIEW
在搜索了Cocos2D论坛之后,我已经设法尝试了自己的努力,但没有达到目的。
这是代码。
NSString *fullPathToPList = [[NSBundle mainBundle] pathForResource:@"missions" ofType:@"plist"];
NSArray *MissionsList;
NSDictionary *plistDict;
NSInteger pIdx, mCount;
plistDict = [NSDictionary dictionaryWithContentsOfFile: fullPathToPList];
MissionsList = [plistDict valueForKey: @"Missions"];
mCount = [MissionsList count];
NSLog(@"Number of Missions in plist = %d", mCount);
for (pIdx = 0; pIdx < mCount; pIdx++)
{
NSDictionary *eachMission = [MissionsList objectAtIndex: pIdx];
NSString *MissionName = [eachMission valueForKey: @"mission name"];
NSString *Available = [eachMission valueForKey: @"Available"];
NSLog(@"\nMission[%d] \nName = %@, \nAvailable = %@", pIdx, MissionName, Available);
}
我想在这里发生什么,是为了让它回归
Mission 1
Name = First Mission
Available = 1
非常感谢任何正确方向的帮助。
答案 0 :(得分:1)
根据您的图片Missions
是字典而不是数组。所以你需要以不同的方式阅读它们。
NSDictionary *plistDict = ...;
NSDictionary *missions = [plistDict objectForKey:@"Missions"];
[missions enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSDictionary *mission, BOOL *stop) {
NSString *missionName = [mission objectForKey:@"mission name"];
NSNumber *available = [mission objectForKey:@"Available"];
NSLog(@"Mission: %@, Name = %@, Available = %@", key, missionName, available);
}];
请注意,您不一定会按照字典中定义的顺序恢复任务。因此,您也无法获得索引。如果您需要知道索引,则需要在plist中将Missions
对象更改为数组。
另请注意,您的plist中Available
被定义为boolean
,因此您应将该值存储在NSNumber
中。