ios – 设置一个plist来存储iPhone游戏的应用程序数据(而不是设
发布时间:2020-12-14 18:12:55 所属栏目:百科 来源:网络整理
导读:我正在编写一款iPhone游戏,并且能够很好地处理硬编码的水平数据,但我希望将水平数据存储在plist中并在启动时加载它.我从来没有使用过plists,也很难理解我应该如何根据我的数据模型设置plist. 这是我现在硬编码的方式: (在我的appDelegate中) - (void)loadLe
我正在编写一款iPhone游戏,并且能够很好地处理硬编码的水平数据,但我希望将水平数据存储在plist中并在启动时加载它.我从来没有使用过plists,也很难理解我应该如何根据我的数据模型设置plist.
这是我现在硬编码的方式: (在我的appDelegate中) - (void)loadLevels { //setup NSNumber objects to load into sequences NSNumber * rID = [[[NSNumber alloc] initWithInt:0] autorelease]; NSNumber * bID = [[[NSNumber alloc] initWithInt:1] autorelease]; NSNumber * gID = [[[NSNumber alloc] initWithInt:2] autorelease]; NSNumber * yID = [[[NSNumber alloc] initWithInt:3] autorelease]; NSNumber * rbID = [[[NSNumber alloc] initWithInt:4] autorelease]; NSNumber * rgID = [[[NSNumber alloc] initWithInt:5] autorelease]; NSNumber * ryID = [[[NSNumber alloc] initWithInt:6] autorelease]; NSNumber * bgID = [[[NSNumber alloc] initWithInt:7] autorelease]; NSNumber * byID = [[[NSNumber alloc] initWithInt:8] autorelease]; NSNumber * gyID = [[[NSNumber alloc] initWithInt:9] autorelease]; //Level One's Sequence NSMutableArray * aSequence = [[[NSMutableArray alloc] initWithCapacity:1] autorelease]; [aSequence addObject: rID]; [aSequence addObject: bID]; [aSequence addObject: gID]; [aSequence addObject: yID]; [aSequence addObject: rbID]; [aSequence addObject: rgID]; [aSequence addObject: ryID]; [aSequence addObject: bgID]; [aSequence addObject: byID]; [aSequence addObject: gyID]; // Load level One _levels = [[[NSMutableArray alloc] init] autorelease]; Level *level1 = [[[Level alloc] initWithLevelNum:1 levelSpeed:1.0 levelSequence:aSequence] autorelease]; [_levels addObject:level1]; //do the same thing for subsequent levels// } (这就是我实现Level Level的方法) #import "Level.h" @implementation Level @synthesize levelNum = _levelNum; @synthesize levelSpeed = _levelSpeed; @synthesize levelSequence = _levelSequence; - (id)initWithLevelNum:(int)levelNum levelSpeed:(float)levelSpeed levelSequence:(NSMutableArray *)levelSequence { if ((self = [super init])) { self.levelNum = levelNum; self.levelSpeed = levelSpeed; self.levelSequence = [[[NSMutableArray alloc] initWithArray:levelSequence] autorelease]; } return self; } - (void)dealloc { [_levelSequence release]; _levelSequence = nil; [super dealloc]; } @end 我只是没有得到如何设置一个plist来存储我的数据以匹配我的模型.请问有人可以给我一些建议吗? 加成: 现在,如果我确实有正确的设置,我如何将值加载到我的程序中? 解决方法
>将plist文件添加为项目中的资源文件.说,它的名字是config.plist
>获取资源文件的路径. (但是,请注意[NSBundle mainBundle],因为它不会在单元测试中返回单元测试包.) NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"]; >您的根对象是一个级别数组.将其加载到NSArray中. // this is autoreleased. you can retain it if needed NSArray *levelArray = [NSArray arrayWithContentsOfFile:plistPath]; >现在你有了一系列关卡.每个级别都是字典.加载级别i(从0开始计数). NSDictionary *level = [levelArray objectAtIndex:i]; >现在,您可以使用objectForKey方法从级别字典中获取对象.例如,要获取序列数组: NSArray *seq = [level objectForKey:@"levelSequence"]; >您可以循环使用levelArray为您的所有级别分配,初始化和添加到级别数组. 希望能帮助到你.请注意,我没有编译代码,因此可能存在一些拼写错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |