如何使用此格式从plist访问特定周计划? 如果任何人知道任何与多级结构化plist相关的教程,请建议。
以下代码为我提供了存储在Plist
中的所有数据-(void)ReadAppPlist
{
plistPath = [[NSBundle mainBundle] pathForResource:@"runplan" ofType:@"plist"];
NSMutableDictionary * propertyDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
name = [propertyDict objectForKey:@"Run - 1"];
NSLog(@"%@",name.description);
}
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">
<dict>
<key>Run - 1</key>
<dict>
<key>Level</key>
<string>Beginner</string>
<key>Category</key>
<string>5K</string>
<key>Plan</key>
<dict>
<key>Duration</key>
<string>5week</string>
<key>Week 1</key>
<dict>
<key>Day 1</key>
<string>Rest or run/walk</string>
<key>Day 2</key>
<string>2.5 km run</string>
<key>Day 3</key>
<string>Rest or run/walk</string>
<key>Day 4</key>
<string>2.5 km run</string>
<key>Day 5</key>
<string>Rest</string>
<key>Day 6</key>
<string>2.5 km run</string>
<key>Day 7</key>
<string>30 - 60 min walk</string>
</dict>
<key>Week 2</key>
<dict>
<key>Day 1</key>
<string>Rest or run/walk</string>
<key>Day 2</key>
<string>3 km run</string>
<key>Day 3</key>
<string>Rest or run/walk</string>
<key>Day 4</key>
<string>2.5 km run</string>
<key>Day 5</key>
<string>Rest</string>
<key>Day 6</key>
<string>3 km run</string>
<key>Day 7</key>
<string>35 - 60 min walk</string>
</dict>
</dict>
</dict>
我不知道如何检索这些数据,如果有人知道解决方案,请帮助我... 提前谢谢。
答案 0 :(得分:2)
NSString *errorDesc = nil;
NSPropertyListFormat format;
plistPath = [[NSBundle mainBundle] pathForResource:@"runplan" ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSMutableDictionary *properties = (NSMutableDictionary *)[NSPropertyListSerialization propertyListFromData:plistPath mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
//Now get the nested dictionary for the key "Run - 1"
NSDictionary *name = (NSDictionary *)[properties valueForKey:@"Run - 1"];
//Now get the nested dictionary for the key "Week 1"
NSDictionary *name2 = (NSDictionary *)[name valueForKey:@"Week 1"];
基本上,您可以遍历层次结构获取valueForKey:
的词典。
答案 1 :(得分:0)
通过这种方式,我们可以遍历plist文件的内部结构......
-(void)ReadAppPlist{
plistPath = [[NSBundle mainBundle] pathForResource:@"runplan" ofType:@"plist"];
NSMutableDictionary * propertyDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
//name1 dictionary will have the entire content of plist
NSDictionary *name1 = (NSDictionary *)[propertyDict objectForKey:@"Run - 1"];
// here we are traversing to inner structure of elements.
NSDictionary *level=[name1 objectForKey:@"Level"];
NSDictionary *category=[name1 objectForKey:@"Category"];
NSDictionary *plan=[name1 objectForKey:@"Plan"];
NSDictionary *week=[plan objectForKey:@"Week 1"];
NSDictionary *Day=[week objectForKey:@"Day 1"];
NSLog(@"LEVEL %@",level);
NSLog(@"CATEGORY %@",category);
NSLog(@"Week Plan %@",week);
NSLog(@"Day Plan %@",Day);
}