Я хотел бы создать неизменяемое значение, которому назначаются разные значения в зависимости от условия. В Scala я мог бы написать следующее:
let attribs = if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
} else {
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
}
но поскольку инструкции Swift if не возвращают результат выполнения кода, который не работает.
Если тест был для нормального Bool, я мог бы использовать тернарный условный оператор
let attribs = #available(iOS 8.2, *) ?
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
:
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
но это не работает для тестов версии iOS, я получаю следующую ошибку:
#available may only be used as condition of an 'if', 'guard' or 'while' statement.
Мне кажется, что я застрял в var, но если я также не сделаю это необязательным, я получаю двойное назначение в большинстве случаев, которое кажется таким уродливым и ненужным?
var attribs = [ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
}
Спасибо за любую помощь!