2012-04-26 58 views
0

我是新来的plists,我真的需要使用一个。我拥有的是一个plist,用两个词典存储不同的数字。我需要获得存储的那个数字,并将其作为一个整数。此过程将从名为“readPlist”的方法运行。整数从.plist

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

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

我环顾四周如何访问plists,但人们已经显示的代码不起作用。

在此先感谢。

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

properties.plist

回答

2

如果你读你的plist中的内容转换成字典(我不会告诉你如何做到这一点,但this是我经常参考的教程),那么这是一个与[[myDictionary objectForKey:@"key"]stringValue];级别的关键字不同的问题。然后,使用NSString的非常有用的-stringByReplacingOccurencesOfString:withString:来摆脱“L - ”部分,只获得一个数值。最后,从[myString intValue]的字符串中获得一个整数。

+0

我刚刚添加了一张图片,让我想要的更清晰些。 – akuritsu 2012-04-26 04:36:48

+0

啊!所以关键就是'L - %d',而且对象已经是一个整数了。我的朋友,这让你的生活变得更加轻松。 – CodaFi 2012-04-26 04:38:27

+0

好的,所以我有代码,但在部分: SpriteNumber = [[savedStock objectForKey:@“L - %d”,LevelNumber] intValue]; 我收到一个错误,说在LevelNumber上'太多的参数方法调用,预期1,有2'。 你知道一种解决这个问题的方法吗? – akuritsu 2012-04-26 05:15:36

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; 
} 

这个编译,但不能与实际数据测试。

+0

那么我想要的号码叫做mosquitoCount? – akuritsu 2012-04-28 04:49:51

+0

是的,例如,此方法将返回等级15,16和17的整数9与上面的plist – YvesLeBorg 2012-04-28 12:20:43