Swift2 到 Swift3 错误 - 无法将类型 'NSDictionary?' 的值分配给类型 'AddressModel'

Swift2 to Swift3 error - Cannot assign value of type 'NSDictionary?' to type 'AddressModel'

将一个应用程序从 Swift2 迁移到 Swift3 时遇到了一个错误,在尝试了几种不同的建议后我一直无法修复。

lazy var address: AddressModel? = {
        [unowned self] in
        var dict = self.getpayloadDict()

        var model: AddressModel
        model = dict
        return model
        }()

model = dict throws 无法将类型 'NSDictionary?' 的值分配给类型 'AddressModel'

地址模型。 . .

class AddressModel: Deserializable {
    var City: String?
    var State: String?
    var PostalCode: String?    

    required init(data: [String: AnyObject]) {
        City = data["City"] as! String?
        State = data["State"] as! String?
        PostalCode = data["PostalCode"] as! String?
    }
}

感谢任何帮助。

错误应该也发生在 Swift 2. 很明显:getpayloadDict() returns 一个不匹配 AddressModel.[=16 的字典=]

您可以从字典中创建一个 AddressModel 实例

lazy var address: AddressModel? = { // this closure does not cause a retain cycle
    let dict = self.getpayloadDict()
    return AddressModel(data: dict)
}()

旁注:

as! String?(强制将可选的展开为可选的)是可怕的语法。使用常规条件向下转换 as? String。并且请遵守变量名以小写字母开头的命名规则。