将应用程序从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?
}
}
任何帮助赞赏。
该错误也应该发生在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
。请遵循变量名称以小写字母开头的命名约定。