【发布时间】:2010-04-12 03:32:15
【问题描述】:
我正在尝试编写一个全局查找表。
我有游戏数据以字符/字符串格式存储在 plist 中,但在加载时需要采用整数/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。
请告诉我一个更好的方法......
【问题讨论】:
标签: objective-c nsarray nsdictionary constants