来自.plist的整数

时间:2012-04-26 03:21:49

标签: ios properties cocos2d-iphone plist

我是plists的新手,我真的需要使用一个。我所拥有的是一个plist,其中存储了两个字典下的不同数字。我需要获取存储的数字,并使其成为整数。此过程将从名为“readPlist。”的方法运行。

plist被称为'properties.plist'。第一本字典被称为“敌人”。它包含各种其他字典,其名称存储在名为“SpriteType”的NSMutableString中。数字的名称将采用“L - %d”格式,%d是一个名为“LevelNumber”的整数。

如果可能的话,有人可以给我一些关于如何使用这些信息以及上面的词典名称来获取整数的代码。

我已经查看了如何访问plists,但是人们展示的代码不起作用。

提前致谢。

编辑:太让他们更容易理解,这是我的下载。我想要一个整数,称为'SpriteNumber'等于'L - %d'的值

properties.plist

2 个答案:

答案 0 :(得分:2)

如果您将plist的内容读入字典(我不会告诉您如何操作,但this是我经常提到的教程),那么这就是将字符串输出的问题[[myDictionary objectForKey:@"key"]stringValue];级别的关键字。然后,使用NSString极其有用的-stringByReplacingOccurencesOfString:withString:来摆脱“L - ”部分,只获得一个数值。最后,从[myString intValue]的字符串中获取一个整数。

答案 1 :(得分:0)

嗯,最简单的方法就是:

-(int) getMosquitoCountForLevel:(int) level {
    int mosquitoCount=0;
    NSString *gsFile = @"whateverFullyQualifiedFileNameYourPlistIs";
    NSDictionary* definitions = [NSDictionary dictionaryWithContentsOfFile:gsFile];
    NSDictionary* mosquitos = [definitions objectForKey:@"Mosquito"];
    if(mosquitos) {
       NSString *levelKey = [NSString stringWithFormat:@"L - %d",level];
       NSNumber *mosquitoCountAsNumber = [mosquitos objectForKey:levelKey];
       if(mosquitoCountAsNumber) {
         mosquitoCount=[mosquitoCountAsNumber intValue];
       } else {
         CCLOGERROR(@"%@ - Mosquito definitions in %@ does not contain a en entry for level %@.",self.class,gsFile,levelKey);
       }
    } else {
      CCLOGERROR(@"%@ - file %@ does not contain a Mosquito dictionary.",self.class,gsFile);
    }
    return mosquitoCount;
}

这是编译但未使用实际数据进行测试。

相关问题