1

在Objective-C中,我们可以像这样使用带有json响应的对象映射

 PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];

在这里,我们可以将 responseObject 与 PolicyData 类属性进行映射。我如何在 Swift 中做同样的事情?

4

2 回答 2

2

它应该像添加桥接头一样简单(因为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 互操作性文档的“错误处理”部分所述。

于 2016-02-28T11:08:36.913 回答
2

您可以添加一个

convenience init?(dictionary: NSDictionary)

到要从字典初始化的任何对象并在那里初始化它的属性。

然而,由于 swift 没有动态调度(迟早),您可能不会将其概括为期望属性的名称是任何对象的字典中的键。

于 2016-02-28T11:12:49.220 回答