Failable Init - Variable 'self.customerType' used before being initialized
我已经对此进行了阅读和阅读,并在这里了解了基本知识-我只是不明白为什么会出现此错误。我使用第二个init从Firebase实例化一个客户,但是即使我注释掉其中的所有内容,我仍然会收到错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | class Customer { enum customerTypes { case consumer case business } // MARK - properties var id: String? let customerType: customerTypes var name1: String var name2: String? var address: Address? var phone: String? var email: String? struct Address { var street: String var postalCode: String var city: String var country: String ="Norway" } init(type: customerTypes, name1: String, name2: String?, phone: String, email: String, address: Address? ) { self.customerType = type self.name1 = name1 self.name2 = name2 self.phone = phone self.email = email self.address = address } init?(data: [String: Any]) { guard let type = data["customerType"] as? String else { return } guard let name1 = data["name1"] as? String else { return } self.customerType = type =="Consumer" ? .consumer : .business self.name1 = name1 // if let name2 = data["name2"] as? String { self.name2 = name2 } // if let phone = data["phone"] as? String { self.phone = phone } // if let email = data["email"] as? String{ self.email = email } // if let address = data["address"] as? [String: Any] { // let street = address["street"] as? String // let postCode = address["postCode"] as? String // let city = address["city"] as? String // if street != nil && postCode != nil && city != nil { // self.address = Address(street: street!, postalCode: postCode!, city: city!) // } // } } |
我在这里忽略了什么简单的问题?
您声明一个初始化器,该初始化器Promise返回一个初始化的
这意味着,如果您成功从初始化程序返回(即不返回
该错误对于错误的位置不是很有帮助,因为该错误实际上在下面的行中。只需将
因此,如果在
没有初始值的属性需要在
1 2 3 4 | init?(data: [String: Any]) { customerType = .consumer name1 ="" } |
或:
1 2 | var customerType: customerTypes? var name1: String? |
注意:通过设置属性