我想将一个变量的名称设置为另一个变量的值,有没有其他方法可以做到这一点,因为我认为这不是方法。
NSString *myint = @"a";
NSString *([NSString stringWithFormat:@"%@", myint]) = @"something";
NSLog(@"%@", a);
最佳答案
不,你不能那样做。一旦你的代码被编译,你的变量就没有真正的名字——只有位置。您在调试器中看到的名称由符号文件提供,调试器使用该文件将位置映射到名称。
键值编码可能有所帮助,具体取决于您真正想要完成的目标。使用 KVC,您可以使用键名来引用值而不是访问变量,就像您使用字典一样。例如,如果您有一个具有属性 foo
和 bar
的对象,您可以执行如下操作:
NSString *key = @"foo";
[myObject setValue:@(5) forKey:key];
您甚至可以覆盖 -setValue:forKey:
以便它接受任何键并记住该值(这正是字典所做的)。
您可以朝另一个方向走(将一个变量设置为另一个变量的名称)使用stringification operator ,但它有点老套,通常用处不大。简而言之,以# 为前缀的宏参数被用作文字字符串而不是被评估。所以你会像这样创建一个宏:
#define string(x) #x
然后您可以像这样在代码中的某处使用它:
int foo = 5;
NSLog("The name of the variable is %s and its value is %d.", string(foo), foo);
结果如下:
The name of the variable is foo and its value is 5.
关于ios - Xcode,ios,将变量名称设置为另一个变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31600358/