Add your own initializer as an extension to your struct. Extensions cannot remove existing functionalities, so it will preserve struct’s default initializer.
struct OrderFill {
let price: Int
let qty: Int
let timeStamp: NSDate
}
extension OrderFill {
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)