【发布时间】:2015-10-23 15:29:59
【问题描述】:
我正在尝试为我的班级创建一个方便的初始化:用户。我以前为另一个类做过这个,并且 - 再次创建它 - 我使用了相同的代码,只是我的 User 类有所不同。
这是我的用户类:
import Foundation
class User {
//Database Variables
let userID: String?
let firstName: String?
let lastName: String?
let password: String?
let emailID: String?
let dob: String? //timestamp
let picture: String? //URL?
let location: Location?
let sex: String?
convenience init(data: [[String: AnyObject]]) {
self.init(userID: String(data["user_id"]!),
firstName: String(data["first_name"]!),
lastName: String(data["last_name"]!),
password: String(data["password"]!),
emailID: String(data["email"]!),
dob: String(data["dob"]!),
picture: String(data["picture"]!),
location: Location(
String(data["street"]!),
String(data["city"]!),
String(data["state"]!),
String(data["zip"]!),
String(data["country"]!)),
sex: String(data["sex"]!))
}
init (userID: String, firstName: String, lastName: String,
password: String, emailID: String, dob: String,
picture: String, location: Location, sex: String) {
self.userID = userID
self.firstName = firstName
self.lastName = lastName
self.password = password
self.emailID = emailID
self.dob = dob
self.picture = picture
self.location = location
self.sex = sex
}
但是,Swift 看不到 self.init 方法。我收到了Could not find an overload for init that accepts the supplied arguments
怎么了?
【问题讨论】:
-
看起来您正在调用带有一些额外参数的 init:城市、州、邮编...
-
对,但这些都是 Location 对象的一部分
-
您的 Location 初始化程序似乎有错误,您可以在 Location 类中发布 init 方法的代码吗?
-
这里:init(streetAddress: String, city: String, state: String, zipCode: String, countryCode: String)
-
错误消息指的是
Location(...)调用,因为缺少参数名称:Location(streetAddress: ..., city: ..., ...)。