Swift2到Swift3错误 - 无法指定类型'NSDictionary?'的值输入'AddressModel'

问题描述 投票:0回答:1

将应用程序从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'

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?
    }
}

任何帮助赞赏。

swift3 nsdictionary
1个回答
0
投票

该错误也应该发生在Swift 2中。很明显:getpayloadDict()返回一个与AddressModel不匹配的字典。

您可以从字典中创建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。请遵循变量名称以小写字母开头的命名约定。

© www.soinside.com 2019 - 2024. All rights reserved.