ios - Xcode,ios,将变量名称设置为另一个变量的值?

标签 ios xcode nsstring

我想将一个变量的名称设置为另一个变量的值,有没有其他方法可以做到这一点,因为我认为这不是方法。

NSString *myint = @"a";

NSString *([NSString stringWithFormat:@"%@", myint]) = @"something";

NSLog(@"%@", a);

最佳答案

不,你不能那样做。一旦你的代码被编译,你的变量就没有真正的名字——只有位置。您在调试器中看到的名称由符号文件提供,调试器使用该文件将位置映射到名称。

键值编码可能有所帮助,具体取决于您真正想要完成的目标。使用 KVC,您可以使用键名来引用值而不是访问变量,就像您使用字典一样。例如,如果您有一个具有属性 foobar 的对象,您可以执行如下操作:

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/

相关文章:

xcode - 如何在 UITextField 上设置字符限制

ios - 如何使用 Swift 将搜索栏移动到导航栏中?

ios - XCode 6.0 Spritekit : Landscape Coordinates display correctly on device but wrong on simulator

ios - 如何使用和调试不存在模拟器的 iOS 版本?

ios - 如何从此 NSString 获取日期(不是时间或任何字母字符)?

cocoa-touch - 将 CGPoint 转换为字符串的问题

ios - 注册 NSURLProtocol (URLProtocol) 类以与外部应用程序一起使用?

iOS-Charts 分组条形图,大小适合

php - iOS obj-c上传图像到mysql,afnetworking

ios - 如何从具有不同类的不同 View Controller 调用函数