Если я создаю быструю структуру без init
, тогда я могу вызвать созданный компилятором инициализатор по умолчанию по умолчанию, например:
struct OrderFill {
let price:Int
let qty: Int
let timeStamp: NSDate
}
let o = OrderFill(price: 2, qty: 1, timeStamp: someDate)
То, что я хотел бы сделать, это создать метод инициализации удобства для десериализации из словаря, который затем соединяется с init по умолчанию. Что-то вроде
struct OrderFill {
let price:Int
let qty: Int
let timeStamp: NSDate
init(dict:[String:AnyObject]) throws {
self.init(
price: dict["price"] as! Int
qty: dict["qty"] as! Int
timeStamp: try parseDate(dict["ts"] as! String)
}
}
let o = OrderFill(someDict)
Когда я пытаюсь записать этот код, компилятор (Xcode 7.2) дает мне ошибку "Дополнительный аргумент" qty "в вызове", как будто он не видит по умолчанию по умолчанию и пытается рекурсивно вызвать init(dictionary)
Я могу написать собственный собственный init init или просто назначить свойства непосредственно из моего init(dictionary)
, но было бы неплохо, если бы я мог связать вызов. Есть ли способ сделать это быстрым?