【发布时间】:2011-02-06 04:59:29
【问题描述】:
我正在编写一个 iPhone 游戏,它可以很好地处理我的硬编码关卡数据,但我想将关卡数据存储在 plist 中,并在启动时加载它。我从未使用过 plist,并且无法理解如何根据我的数据模型设置 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//
}
(这就是我实现关卡类的方式)
#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 的方式 - 数据模型只是初始化我的级别的三个变量(上图)。如果您查看我当前的 plist,可能会更清楚它是如何设置的,但每个级别都包含of:关卡编号、关卡速度和表示该关卡所需顺序的数字数组。)
现在,如果我的设置正确,我该如何将值加载到我的程序中?
【问题讨论】:
-
嗯,你的型号是什么?你没有在这里向我们展示。
-
@Jonathan Grynspan 我更新了我的问题,提供了有关我的数据的更多详细信息。希望这有助于理解我想要做什么。
标签: ios objective-c iphone xcode plist