0

这就是我构建我的 PLIST 的方式。

<dict>
<key>level1</key>
<dict>
<key>formation</key>
<dict>
    <key>height</key>
    <integer>34</integer>
    <key>width</key>
    <integer>12</integer>

</dict>
</dict>
</dict>

水平>形成>数据

这是我使用的示例代码,但它没有工作。

//init loading from PLIST here, and then associate value.
NSString *pathString=[NSString stringWithFormat:@"%@Levels",targetWorld];
NSString *path = [[NSBundle mainBundle] pathForResource:pathString ofType:@"plist"];
NSString *levelNameNumber = [[NSString alloc] initWithFormat:targetLevel];

NSDictionary *levelsList = [[NSDictionary alloc] initWithContentsOfFile:path];
NSDictionary *level = [levelsList objectForKey:levelNameNumber];

NSEnumerator *levelFormations = [level objectEnumerator];

for( NSDictionary *worldSize in levelFormations )
{
    worldWidth = [[worldSize objectForKey:@"width"] intValue];
    worldHeight = [[worldSize objectForKey:@"height"] intValue];

    NSLog(@"height is %d",worldHeight);
    NSLog(@"width is %d",worldWidth);

}

[levelNameNumber release];
[levelsList release];

这段代码的问题是它运行了第二个 for 循环并将高度和宽度都返回为零。

任何想法?或者我该如何以正确的方式做到这一点?

4

2 回答 2

0

由于您使用的是levelsList 中的对象,并且最后要释放levelsList,因此您从字典中获得的级别对象也将被释放。你要么不需要发布levelsList,保留level,要么最好开始使用ARC。

于 2012-05-17T07:57:48.177 回答
0

使用 plutil 检查您的 plist 并确保它具有有效的语法。

更多详细信息:http ://www.askdavetaylor.com/can_i_check_my_plist_files_in_mac_os_x_for_problems.html

于 2012-05-16T19:36:06.513 回答