【发布时间】:2015-06-30 18:42:20
【问题描述】:
我正在研究一个自定义场景,其中我需要在运行时创建一个已定义类的对象并为其设置属性。在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 类
感谢任何帮助。
【问题讨论】:
-
我是 swift 新手,但据我所知它是强类型的,所以可能无法仅在运行时确定对象的类型。
-
@Levi 是的,我也有同感,但在我看到的某个线程中的某个地方动态创建对象是可能的,但不确定设置属性。
-
你是说属性吗? Swift 根本不支持自定义属性。您只能使用 Apple 提供的属性(如 @objc)。如果您的意思是属性,那么您需要更新您的答案,因为属性和属性是两个非常不同的东西。
-
所以只要使用RestKit,它不需要你使用Core Data
-
@Wain 不,我不想使用 RestKit,我想自己做点什么。