【问题标题】:Is it possible to reference a variable with a string and an int?是否可以使用字符串和 int 引用变量?
【发布时间】:2023-03-31 17:37:02
【问题描述】:

是否可以用一个字符串和一个int来引用一个变量,像这样:

    int number1;

    int j = 1;

    @"number%i", j = 3; //Hope this makes sense..

上面的代码给了我警告并且不起作用,怎么可能呢。

我也试过这个,但它不起作用(原因很明显):

    int j = 1;

    NSString *refString = [NSString stringWithFormat:@"number%i", j];

    refString = 3;

我真的很挣扎,我知道如何在 Javascript 中做到这一点,但在 Obj-C 中却不知道,这可能吗?

【问题讨论】:

  • 你到底想做什么?
  • 您希望将整数转换为字符串吗?此外,regString 属于 NSString* 类型,无法为其分配像 3 这样的整数常量。
  • 我实际上在你正在谈论的代码标题旁边的括号中写道:“但它不起作用(原因很明显)”

标签: iphone objective-c string reference int


【解决方案1】:

据我推测,您正在尝试根据j 的值设置/检索不同的变量。

您可以为此使用字典:

NSMutableDictionary *numbers = [NSMutableDictionary dictionary];
int j = 1;
[numbers setObject:[NSNumber numberWithInt:3] forKey:[NSNumber numberWithInt:j]];

然后去检索:

[[numbers objectForKey:[NSNumber numberWithInt:j]] intValue];

这有点冗长,但您可以通过创建一个小类来简化它。

【讨论】:

  • 这与使用 NSArray 相同,它只能保存 NS/UI 对象.. 所以这并没有真正的帮助...无论如何谢谢
【解决方案2】:

这是一个anti-pattern 我称之为穷人阵列。更好的方法是使用像数组这样的适当集合,而不是使用一堆秘密相关的变量。如果做得好,带有数组的代码通常也会更短更简洁。

【讨论】:

  • 是的,我想我会用数组来做,我最初试图通过自定义“数组”设置实现超级可定制,但我意识到它只会变得混乱。跨度>
  • 或者只是创建一个简单的类来避免“带有魔法索引的数组”。
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
相关资源
最近更新 更多