我试图编写一个全局排序查找表。
我有一个plist中以字符/字符串格式存储的游戏数据,但在加载时需要以integer/id格式存储。
例如,在级别数据文件中,“p”表示播放器。在游戏代码中,玩家被表示为整数1。这让我做一些按位运算,等等。我在这里做了很大的简化,但试图让大家明白这一点。此外,还会将精灵工作表上的精灵转换为坐标。
现在,此字符串->整数、整数->字符串、整数->坐标等。在代码中,使用case语句在多个位置进行转换。当然,这很糟糕,我宁愿查字典。
我创建了一个名为levelinfo的类,并希望为此转换定义字典,然后在需要进行转换或处理级别数据时调用类方法。
NSString *levelObjects = @"empty,player,object,thing,doohickey";
int levelIDs[] = [0,1,2,4,8];
// etc etc
@implementation LevelInfo
+(int) crateIDfromChar: (char) crateChar {
int idx = [[crateTypes componentsSeparatedByString:@","] indexOfObject: crateChar];
return levelIDs[idx];
}
+(NSString *) crateStringFromID: (int) crateID {
return [[crateTypes componentsSeparatedByString:@","] objectAtIndex: crateID];
}
@end
有更好的办法吗?基本上为每个调用构建这些临时数组、字典或其他东西来进行转换是错误的。我不知道如何声明常量nsarray或nsdictionary。
请告诉我一个更好的方法…