在Objective-C中,如何在运行时向对象动态添加属性?

在Objective-C中,如何在运行时向对象动态添加属性?,objective-c,objective-c-runtime,Objective C,Objective C Runtime,假设(为了论证)我的iOS项目中有一个类,其中包含一些处理方法 我想知道是否有可能在运行时向目标C对象动态添加属性 我需要动态地创建一个对象,该对象来自一个具有非固定模式的键和VAL的N字典实例。为了用一种通用的方式创建对象,我需要NSDictionnary中的键用于属性名,Val用于属性值 -(NSMutableArray *) getFromJSON:(NSString *)json { JSONDecoder *decoder = [[JSONDecoder alloc] init]; N

假设(为了论证)我的iOS项目中有一个类,其中包含一些处理方法

我想知道是否有可能在运行时向目标C对象动态添加属性

我需要动态地创建一个对象,该对象来自一个具有非固定模式的键和VAL的N字典实例。为了用一种通用的方式创建对象,我需要NSDictionnary中的键用于属性名,Val用于属性值

-(NSMutableArray *) getFromJSON:(NSString *)json
{
JSONDecoder *decoder = [[JSONDecoder alloc] init];
NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
NSArray *array = [decoder objectWithData:jsonData];
NSMutableArray *data = [[NSMutableArray alloc] initWithArray:array];
for (int i = 0; i < [data count]; i++) {
    NSDictionary *modelData = [data objectAtIndex:i];
    // .... Object attributes creation goes here
。。等等可能吗


我正在创建一个ModelManager和不同的模型子类,这些子类通过一些特定的操作继承自ModelManager类。在ModelManager类中,我必须执行一个通用方法来创建一个NSMuttableArray,其中包含NSObject列表。此对象对应于从Json请求中提取的数据。
每个Json请求都返回特定于一个模型的数据。我正在研究如何用一种通用的方式来实现这个方法,以便在子类中继承它,并将动态对象强制转换为子类的类型。我发现的唯一通用方法是创建一个伪类,该类使用json数据键创建的属性,然后将此NSObject强制转换为模型子类。

只需将其声明为属性即可

@property (nonatomic, strong) NSDictionary * dic;

然后在运行时按照您想要的方式创建它

self.dic = @{randomKey : randomValue};


那么,仅仅使用
NSMutableDictionary
有什么错呢?转到这里,这可能会对您有所帮助。感谢您的评论,我已经添加了一些代码以进行更多澄清。在我们开始在运行时构建类之前,我想如果您解释一下为什么要这样做可能会更好。类的要点是,您拥有数据和对该数据的操作。仅仅将随机数据放入一个类中的作用是有限的,在这种情况下,您最好将字典作为属性添加到您的常规数据类中。我正在创建一个ModelManager和不同的模型子类,它们通过一些特定的操作继承自ModelManager类。在ModelManager类中,我必须执行一个通用方法,创建一个包含NSObject列表的NSMuttableArray。(我已经在我的主要帖子上添加了其余的内容)谢谢。
@property (nonatomic, strong) NSMutableDictionary * dic;
self.dic = @{randomKey : randomValue};
self.dic = [@{randomKey : randomValue} mutableCopy];