ios - 快速动态创建对象和设置属性

标签 ios swift

我正在研究一个自定义场景,其中我需要在运行时创建一个已定义类的对象并为其设置属性。在 objective-C 中是这样的

//The Model class

@interface Car:NSObject
{
  @property(nonatomic,copy) NSString * numberOfDoors;
  @property(nonatomic,copy) NSString * carModel;
  @property(nonatomic,copy) NSString * carMake;
  @property(nonatomic,copy) NSString * carBrand;

}

为上面的类创建一个自定义运行时对象(不确定这是否正确但只是从我的脑海中说出来)

id myNewObject =  [[NSClassFromString(@"Car") alloc]init];
[myNewObject setValue:@"4 doors" forKeyPath:@"numberOfDoors"];
[myNewObject setValue:@"Prius" forKeyPath:@"carModel"];
[myNewObject setValue:@"2014" forKeyPath:@"carMake"];
[myNewObject setValue:@"Toyota" forKeyPath:@"carBrand"];

所以我在这里的目的是创建一个对象映射模块,该模块将采用类名和对象映射信息,该信息将描述如何从 JSON 响应映射/创建模型对象(与 RestKit 非常相似,但不包括核心数据)同步部分)。

我知道这可以用 objective-c 来完成,但不确定这如何适用于 swift 类

感谢任何帮助。

最佳答案

我想这就是你想要的:

@objc(MyClass)
class MyClass : NSObject {
    var someProperty = 0
}

let type = NSClassFromString("MyClass") as! NSObject.Type
let instance = type()
instance.setValue(12, forKey: "someProperty")

关于ios - 快速动态创建对象和设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31145990/

相关文章:

ios - Swift Parse - 将对象保存在关键位置

ios - iOS 上的 PlayReady DRM : Can you copy the decrypted video image to your own GL Context?

ios - UIView 背景颜色与 swift4 中的导航栏不同

ios - SQLite.swift:实现表示给定表行的模型类的最佳方式?

swift - 如何从容器 View 呈现 View Controller ?

ios - 为什么 NSAttributedString 格式化我的整个字符串?

swift - 如何将 UIActivityViewController 与 SwiftUI 的 ScrollView 集成?

ios - 是否可以在后台模式下运行 Quickblox SDK?

ios - 对所有实例变量编码标准使用@properties

ios - 删除 UIActivityViewController 中的换行符