1

在我的应用程序中,我想减少 if 检查的数量,所以我认为这种方式是最好的,但我不知道该怎么做。

所以我有一堆 #define ,它们是:state1、state2、state3 等......

无论如何,我有 UIButtons 并且带有标签 1 的按钮的图像由 state1 等确定...

无论如何,我现在已经到了做这样的事情的地步:

NSString *variableString = [NSString stringWithFormat:@"state%i", theButton.tag];

那么现在如何从刚刚得到的 NSString 中获取 state1 或 state2 或 state3 之类的变量?

4

3 回答 3

3

使用带有@"state1"、@"state2"...等字符串的 NSDictionary 作为键,并将图像的匹配引用作为键的对象。

于 2012-08-09T22:22:57.060 回答
3

您可以使用:

[self valueForKey:variableString];

但是,如果字符串中的值variableString与变量或属性不匹配,则此调用将引发异常。您可以使用块捕获异常@try { ... } @catch ...。如果您不捕获并处理异常,您的应用程序将失败。

于 2012-08-09T23:05:57.977 回答
0
const int value = [[someString substringFromIndex:nCharsToTrim] intValue];

或者,您可以通过访问字符值来避免不必要的字符串创建-[NSString characterAtIndex:]

(在这种情况下,您可能应该避免使用 0 作为有效的状态值)

于 2012-08-09T22:33:35.187 回答