Reading XML Files on the iPhone
As I started working on my second will-go-to-market iPhone game, one of the most important improvements I made was moving configuration and level details to XML files from the very beginning. One of the differences between a great game and a mediocre game is flexibility, and storing details within XML files gives the gift of manifold flexibility (best of all, you can design a level or content format in XML, and then you can have non-programmers design content, and it's very easy to add content later on).
Fortunately, loading XML files on the iPhone is quite easy, once you pick up a couple of tricks.
The first step is to create a plist file:
Go to
Fileand then selectNew File....Scroll to the bottom of the list of templates, and select
Other.From the templates, select
Property List.Name the properly list
settings.plist, and save it in your project.Add whatever data you're interested in. For this example let's say that you leave Root as a dictionary, and give it three keys:
- An array with the key levels.
- A string with the key title.
- A number with the key version.
Now wherever you want to load the code, you just need to write a few simple lines that look like this:
NSString * fileName = @"settings.plist";
NSString * path = [[NSBundle mainBundle] bundlePath];
NSString * fullPath = [path stringByAppendingPathComponent:fileName];
NSDictionary * root = [[NSDictionary alloc] initWithContentsOfFile:fullPath];
NSArray levels = [root objectForKey:@"levels"];
NSString title = [root objectForKey:@"title"];
int version - [[root objectForKey:@"version"] intValue];
[root release];
One gotcha to watch out for: even if you place all your XML files
in a directory in your project folder named xml, that doesn't
mean the file will be in a directory named xml once you
build you application.