【问题标题】:How to get the value of a variable based on it's string name?如何根据字符串名称获取变量的值?
【发布时间】:2016-04-02 02:41:42
【问题描述】:

我想获取一个 Objective-C 类中所有 ivars 的值并将它们加载到一个数组中。

我有以下代码:

Class class = [self class];
NSString *myClassName = NSStringFromClass([self class]);
unsigned int count;
Ivar *ivars = class_copyIvarList(class, &count);
for (int i=0; i<count; i++) {
    Ivar ivar = ivars[i];
    const char* name = ivar_getName(ivar);
    const char* typeEncoding = ivar_getTypeEncoding(ivar);
    NSLog(@"Class Name: %@ ivar: %s  Type Encoding: %s",myClassName, name, typeEncoding);
}

所以我将名称作为字符串(名称),现在我需要该 ivar 的值。

类似:

value = [self valueFromStringName(name)];

因此,如果我有一个名为 myDate 的日期,我可以将字符串 myDate 传递给一个方法,它会返回它保存的日期值。

我看到了从方法的字符串名称运行方法的例程,但还没有看到可以从字符串名称中获取值的位置。

【问题讨论】:

    标签: objective-c introspection


    【解决方案1】:

    鉴于您已经在使用运行时函数,为什么不继续使用:

    id object_getIvar(id object, Ivar ivar)
    

    获取ivar的值?

    如果您真的希望使用字符串,请查找 KVC、“简单属性的访问器搜索模式”和 valueForKey: 上的 NSObject

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2018-10-20
      • 2020-07-06
      • 1970-01-01
      • 2022-12-15
      相关资源
      最近更新 更多