根据变量的内容访问不同的Singleton数据

时间:2012-08-07 16:34:30

标签: objective-c variables cocos2d-iphone singleton

我正在为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);
}

1 个答案:

答案 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