Chciałbym utworzyć niezmienną wartość, której przypisano różne wartości w zależności od warunku. W Scali byłbym w stanie napisać:Czy istnieje sposób na warunkowe przypisanie do stałych w Swift?
let attribs = if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
} else {
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
}
, ale ponieważ Swift if instrukcje nie zwracają wyniku wykonanego bloku kodu, który nie działa.
Jeśli test był dla normalnego Bool mogę użyć potrójny operator warunkowy
let attribs = #available(iOS 8.2, *) ?
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
:
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
ale to nie działa do testów wersji iOS, pojawia się następujący błąd:
#available may only be used as condition of an 'if', 'guard' or 'while' statement.
Czuję, że utknąłem z var, ale jeśli nie zrobię tego opcjonalnie, w większości przypadków mam podwójne zadanie, które wydaje się tak nieprzyjemne i niepotrzebne?
var attribs = [ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
}
Dzięki za pomoc!
Dzięki, właśnie tego szukałem! – srcmonster