繁体   English   中英

在Objective-C中使用键值编码访问常量

[英]Accessing constants using Key-Value Coding in Objective-C

我正在编写一个包含很多常量的程序。 我决定将它们全部放入一个单独的类中,并通过需要它的类将其导入。 文件看起来与此类似

// Constants.h
extern const int baseCostForBuilding;
extern const int maxCostForBuilding;
// etc

// Constants.m
const int baseCostForBuilding = 400;
const int maxCostForBuilding = 1000;
// etc

我正在尝试使用键值编码访问它们。 到目前为止,我没有尝试过。

id object = [self valueForKey:@"baseCostForBuilding"];

但是我可以执行以下操作,并且效果很好。

id object = baseCostForBuilding;

这似乎毫无意义,但是我有很多必须以“ CostForBuilding”结尾的变量,而我需要的函数仅获得字符串的第一部分。 例如“ base”,“ max”,“ intermediate”等。然后它将与“ CostForBuilding”或其他名称结合起来以获取变量名称。

如果可能的话,最好只有一两行代码,而不是多个if语句来访问正确的变量。 有人知道这样做的方法吗? 提前致谢。

您可以使用适当的值来填充字典:

- (id)init
{
    ...
    buildingCosts = [[NSDictionary alloc] initWithObjectsAndKeys:
                      [NSNumber numberWithInt:100], @"base",
                      [NSNumber numberWithInt:200], @"max",
                      ...,
                     nil];
    ...
}

- (int)buildingCostForKey:(NSString *)key
{
    return [(NSNumber *)[buildingCosts objectForKey:key] intValue];
}

- (void)dealloc
{
    [buildingCosts release];
}

然后可以使用以下方法:

int baseCost = [myClass buildingCostForKey:@"base"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM