在运行时获取密钥类

时间:2014-10-06 14:46:25

标签: cocoa objective-c-runtime key-value-coding

我有一个以下界面的课程:

@interface MyData : NSObject
@property (readwrite, strong) NSString *urlToParse;
@property (readwrite, strong) MappingElement *titleElement;


- (instancetype)initWithPlist:(NSString *)plistPath;

它的实现是这样的:

- (instancetype)initWithPlist:(NSString *)plistPath
{
    if (self = [super init]) {
        NSDictionary *plistData = [[NSDictionary alloc]
initWithContentsOfFile:plistPath];
        [self setValuesForKeysWithDictionary:plistData];
    }

    return self;
}

#pragma mark KVC related methods
- (void)setValue:(id)value forKey:(NSString *)key
{
    NSLog(@"key class: ",[[self valueForKey:key] class]); // it is printing nil, prints
correct value if key is initialized in init method
}

现在有两种情况:

场景1:不要在initWithPlist:方法中初始化实例变量

在这种情况下,如果我尝试在setValue:forKey:方法中记录密钥类, 它打印无。

场景2:initWithPlist:方法中初始化实例变量

在这种情况下,如果我尝试在setValue:forKey:方法中记录密钥类, 它会打印NSString,然后打印MappingElement

有没有办法在'场景1'中实现相同的结果,可能是 使用Objective = C运行时的任何API?

0 个答案:

没有答案