Ich möchte einen unveränderlichen Wert erstellen, der abhängig von einer Bedingung unterschiedliche Werte zugewiesen bekommt. In Scala würde ich in der Lage sein, die folgenden schreiben:Gibt es eine Möglichkeit, bedingte Zuweisung zu Konstanten in Swift zu tun?
let attribs = if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
} else {
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
}
aber da Swift wenn Anweisungen geben nicht das Ergebnis der Codeblock ausgeführt, das nicht funktioniert.
Wenn der Test für einen normalen Bool ist ich die ternäre Konditionaloperator
let attribs = #available(iOS 8.2, *) ?
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
:
[ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
verwenden könnte, aber das funktioniert nicht für die iOS-Version Tests, bekomme ich folgende Fehlermeldung:
#available may only be used as condition of an 'if', 'guard' or 'while' statement.
Ich fühle mich, als ob ich mit einer Var stecken bleibe, aber wenn ich es auch nicht optional mache, endet in den meisten Fällen eine Doppelaufgabe, die so hässlich und unnötig erscheint.
var attribs = [ NSFontAttributeName: UIFont.systemFontOfSize(30) ]
if #available(iOS 8.2, *) {
[ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ]
}
Danke für jede Hilfe!
Danke, das war genau das, was ich gesucht habe! – srcmonster