我有3个名为level0,level1,level2的plist文件,所有这个plist都具有相同的结构,它由数字变量和数组组成。我使用此plist中的数据初始化我的应用程序。
+(instancetype)levelWithNum:(int)levelNum; {
NSString* fileName = [NSString stringWithFormat:@"level%i.plist", levelNum];
NSString* levelPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:fileName];
NSDictionary *levelDic = [NSDictionary dictionaryWithContentsOfFile:levelPath];
NSAssert(levelDic, @"level no loaded");
Level *l = [[Level alloc]init];
l.coinsPerLvl = [levelDic[@"coinsPerLvl"] integerValue];
l.words = levelDic[@"words"];
return l;
}
现在我决定只使用一个plist并添加3个字典。我怎样才能从plist中读取一个字典,如上例所示,我使用plist文件。
坦克提供任何帮助!
答案 0 :(得分:1)
您只需要一个代表根词典的中间变量,并从根词典中提取级别词典,例如:
(defun insert-weeks ()
(interactive)
(let ((p 52))
(while (> p 0)
(insert (format "* Week %2d\n" p))
(setq p (1- p)))))
希望有所帮助。
答案 1 :(得分:0)
将plist root作为数组(如下所示)。这样你就可以轻松获得关卡信息。
示例代码
+(void)levelWithNum:(int)levelNum {
NSString* fileName = @"level.plist";
NSString* levelPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:fileName];
NSArray *levelsArray = [NSArray arrayWithContentsOfFile:levelPath];
NSAssert(levelsArray, @"level no loaded");
Level *l = [[Level alloc]init];
l.coinsPerLvl = [[levelsArray objectAtIndex:levelNum][@"coinsPerLvl"] integerValue];
l.words = [[levelsArray objectAtIndex:levelNum][@"words"] integerValue];
return l;
}