2015-07-28 18 views

Odpowiedz

11

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") 
    } 
} 
1

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

Powiązane problemy