Czy można użyć warunku "LUB", używając kodu Swift: if let
?, jeśli jest to możliwe z warunkiem LUB
Coś (za słownikiem Dictionary<String, AnyObject>
):
if let value = dictionary["test"] as? String or as? Int {
println("WIN!")
}
Czy można użyć warunku "LUB", używając kodu Swift: if let
?, jeśli jest to możliwe z warunkiem LUB
Coś (za słownikiem Dictionary<String, AnyObject>
):
if let value = dictionary["test"] as? String or as? Int {
println("WIN!")
}
To nie ma sensu, w jaki sposób można określić, czy wartość jest Int lub ciąg, gdy masz tylko jedną instrukcję if? Można jednak zrobić coś takiego:
let dictionary : [String : Any] = ["test" : "hi", "hello" : 4]
if let value = dictionary["test"] where value is Int || value is String {
print(value)
}
(Testowany w Swift 2.0)
Można też to zrobić, jeśli trzeba robić różne rzeczy w zależności od typu:
if let value = dictionary["test"] {
if let value = value as? Int {
print("Integer!")
} else if let value = value as? String {
print("String!")
} else {
print("Something else")
}
}
Niestety według mojej wiedzy nie można. Będziesz musiał użyć dwóch oddzielnych instrukcji if.
if let value = dictionary["test"] as? String {
doMethod()
} else if let value = dictionary["test"] as? Int {
doMethod()
}
Istnieje wiele sposobów obejścia tego problemu. To tylko jeden z nich. Więcej informacji na temat tego specjalnego typu instrukcji if można znaleźć w dokumentacji Apple na stronie Optional Chaining. Jest to przy użyciu Swift 1.2
dlaczego nie po prostu użyj 'as? AnyObject' – sbarow