我正在为iPhone使用cocos2d,我有一个单例设置来存储玩家的所有数据和变量,我需要知道这是否可行, 所以在伪代码中它会是这样的:
players * playersDataManager = [players playersSaveDataManager];
selected = "sword"
name = (@"%@AttRange",selected);
AttRange = playersDataManager.name;
name
会根据选择的玩家而改变,因此`AttRange也会改变。我只是不知道如何在实际代码中设置它。这是我正在使用的实际代码:
-(void)showAttackRange:(NSMutableString *)selected {
players * playersDataManager = [players playersSaveDataManager];
NSMutableString * name1 = [NSMutableString stringWithString:@"MaxRange"];
[name1 insertString:selected atIndex:0];
int r = [playersDataManager valueForKey:name1];
NSLog(@"%@%i",name1,r);
}
答案 0 :(得分:3)
它被称为“键值编码”
要在示例代码中使用它:
Players * playersDataManager = [Players playersSaveDataManager];
NSString *selected = @"sword";
NSString *propertyName = [NSString stringWithFormat:@"%@AttRange", selected);
AttRange value = [playersDataManager valueForKey:propertyName];
假设您的Players
类具有&类型的属性,则可以正常工作名称AttRange swordAttRange
是@synthesized
w /默认访问者,或者,如果您为属性指定了自定义访问者,则它们遵循预期的命名方案。
(有关KVC在访问者命名方案方面的预期的更多信息,请阅读文档......)
Apple文档:Key-Value Coding Programming Guide
编辑:
使用KVC获取标量值会返回NSNumber
对象:Apple Documentation -> KVC Scalar and Structure support