这是我如何构建我的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>
水平&GT;形成&GT;数据
这是我使用的示例代码,但它没有用。
//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循环并将高度和宽度返回到ZERO。
有什么想法吗?或者我该如何正确地做到这一点?
答案 0 :(得分:0)
使用plutil检查你的plist并确保它具有有效的语法。
此处有更多详情:http://www.askdavetaylor.com/can_i_check_my_plist_files_in_mac_os_x_for_problems.html
答案 1 :(得分:0)
由于您正在使用levelsList中的对象,并且您最后发布了levelsList,因此您从字典中获取的关卡对象也将被释放。您需要不释放levelsList,保持级别,或者最好开始使用ARC。