在Objective-C中,我们可以像这样使用带有json响应的对象映射
PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];
在这里,我们可以将 responseObject 与 PolicyData 类属性进行映射。我如何在 Swift 中做同样的事情?
在Objective-C中,我们可以像这样使用带有json响应的对象映射
PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];
在这里,我们可以将 responseObject 与 PolicyData 类属性进行映射。我如何在 Swift 中做同样的事情?
它应该像添加桥接头一样简单(因为PolicyData
可能是用 Objective-C 编写的)。有关如何执行此操作的说明,请参阅此 Apple 文档。
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 互操作性文档的“错误处理”部分所述。
您可以添加一个
convenience init?(dictionary: NSDictionary)
到要从字典初始化的任何对象并在那里初始化它的属性。
然而,由于 swift 没有动态调度(迟早),您可能不会将其概括为期望属性的名称是任何对象的字典中的键。