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
。并且请遵守变量名以小写字母开头的命名规则。
将一个应用程序从 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
。并且请遵守变量名以小写字母开头的命名规则。