У меня есть быстрая структура с именем Product, которая берет словарь в методе init. Я хочу вычислить цену value
в локальной структуре Price внутри моего продукта. Я хочу, чтобы это значение было константой let
, так как оно никогда не изменится, но быстрый не позволит мне это сделать без использования var
, заявив, что константа let
неправильно инициализирована.вычислить значение свойства let struct в init
Как я могу сделать свой объект value
внутри моей цены struct a let constant в этом случае?
struct Product {
let price: Price
init(dictionary: Dictionary<String, AnyObject>) {
if let tmp = dictionary["price"] as? Dictionary<String, AnyObject> { price = Price(dictionary: tmp) } else { price = Price() }
}
struct Price {
var value = ""
init() {
}
init(dictionary: Dictionary<String, AnyObject>) {
if let xForY = dictionary["xForY"] as? Array<Int> {
if xForY.count == 2 {
value = "\(xForY[0]) for \(xForY[1])"
}
}
if let xForPrice = dictionary["xForPrice"] as? Array<Int> {
if value == "" && xForPrice.count == 2 {
value = "\(xForPrice[0])/\(xForPrice[1]):-"
}
}
if let reduced = dictionary["reduced"] as? String {
if value == "" {
value = "\(reduced):-"
}
}
}
}
}
мне понравился '' 'where' '' в выражении if let. Вероятно, я избежу того, чтобы структура была необязательной, так как я знаю, какое значение она должна иметь как резерв, а это «». Так что я пропустил последний одинокий случай '' 'else''' в собственных попытках. Спасибо @iOSX –