0

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

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

如果可能的话,有人可以给我有关如何使用该信息和上面的字典名称获取该整数的代码。

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

提前致谢。

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

属性.plist

4

2 回答 2

2

如果您将 plist 的内容读入字典(我不会告诉您如何操作,但这我经常参考的教程),那么只需将字符串从关卡的键中取出[[myDictionary objectForKey:@"key"]stringValue];. 然后,使用 NSString 非常有助于-stringByReplacingOccurencesOfString:withString:摆脱“L -”部分,只得到一个数值。最后,使用 . 从字符串中获取一个整数[myString intValue]

于 2012-04-26T03:33:27.513 回答
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;
}

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

于 2012-04-27T15:52:09.383 回答