在Objective-C中,我们可以像这样使用json响应的对象映射
PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];
这里我们可以使用PolicyData类属性映射responseObject。 我如何在Swift中做同样的事情?
答案 0 :(得分:2)
它应该像添加桥接头一样容易(因为PolicyData
很可能是用Objective-C编写的)。有关如何执行此操作的说明can be seen in this Apple documentation。
然后,您可以像执行一样轻松地创建PolicyData
对象:
do {
let newPolicyDataObject = try PolicyData(responseObject)
} catch error as NSError {
print("error from PolicyData object - \(error.localizedDescription)")
}
这假定您的responseObject
是NSDictionary。 Swift 2有助于(?)将错误参数转换为try / catch块。
即PolicyData的
- (instancetype) initWithDictionary:(NSDictionary *)responseObject error:(NSError *)err;
宣言神奇地变成
func initWithDictionary(responseObject : NSDictionary) throws
如Apple Objective-C / Swift互操作性文档的"Error Handling" section中所述。
答案 1 :(得分:2)
您可以添加
convenience init?(dictionary: NSDictionary)
到你想要从字典初始化的任何对象并在那里初始化它的属性。
然而,由于swift不进行动态调度(迟早),您可能不会将其概括为期望属性的名称成为任何对象的字典中的键。