如果我创建一个没有 no 的 swift 结构init
,那么我可以调用编译器生成的默认成员初始化器,如下所示:
struct OrderFill {
let price:Int
let qty: Int
let timeStamp: NSDate
}
let o = OrderFill(price: 2, qty: 1, timeStamp: someDate)
我想做的是创建一个方便的init方法来从字典中反序列化,然后链接到默认的memberwise 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)给了我错误“Extra argument 'qty' in call”,就好像它看不到默认成员并试图递归调用init(dictionary)
我可以编写自己的成员初始化,或者我可以直接从 my 分配属性init(dictionary)
,但如果我可以链接调用会很好。有没有办法快速做到这一点?