Я занимаюсь множеством вычислений при разборе и создаю некоторую комбинацию из json-данных, поступающих с сервера. Весь процесс занимает много времени, и, главным образом, у меня проблема с фиксированным кодом, но в одном месте профилировщик времени показывает время, затраченное на один конкретный вызов, который я не могу понять.
У меня много кастингов в моей обработке. Он создает множество объектов типа FlightFare, и я создаю его из словаря.
Итак, convinece init выглядит как ниже, как я могу его избежать..?
convenience init (dictionary: [String:AnyObject]) {
self.init()
refundType = dictionary["rt"] as! String
if let unwrappedScore = dictionary["r"] as? Double {
score = unwrappedScore
}
if let unwrappedValue = dictionary["t"] as? Int {
taxes = unwrappedValue
}
if let unwrappedValue = dictionary["bf"] as? Int {
baseFare = unwrappedValue
}
if let unwrappedValue = dictionary["f"] as? Int {
fee = unwrappedValue
}
if let unwrappedValue = dictionary["d"] as? Int {
discount = unwrappedValue
}
if let unwrappedValue = dictionary["tf"] as? Int {
fare = unwrappedValue
}
if let unwrappedValue = dictionary["ttf"] as? Int {
totalFare = unwrappedValue
}
if let unwrappedValue = dictionary["hbo"] as? Bool {
hbo = unwrappedValue
}
providerKey = dictionary["pk"] as? String
hbf = dictionary["hbf"] as? [String]
}