Czy można sprawdzić, czy zmienna jest opcjonalna i jaki rodzaj jest zawijany?Sprawdź, czy zmienna jest opcją i jaki rodzaj jest opakowywany.
Jest możliwe, aby sprawdzić, czy zmienna jest specyficzny opcjonalnie:
let someString: String? = "oneString"
var anyThing: Any = someString
anyThing.dynamicType // Swift.Optional<Swift.String>
anyThing.dynamicType is Optional<String>.Type // true
anyThing.dynamicType is Optional<UIView>.Type // false
Ale czy to możliwe, by sprawdzić Agains wszelkiego rodzaju opcja? Coś jak:
anyThing.dynamicType is Optional.Type // fails since T cant be inferred
// or
anyThing.dynamicType is Optional<Any>.Type // false
I raz wiedząc masz opcjonalny, pobierać typ jest Opakowanie:
// hypothetical code
anyThing.optionalType // returns String.Type
W każdym razie, nie należy umieszczać w '' Optional' Any'. zobacz: [Jak odwijać opcjonalną wartość od Dowolnego typu?] (http://stackoverflow.com/q/27989094/3804019) – rintaro
Może to być prawidłowy przypadek, możesz mieć funkcję akceptującą 'Any' i która zachowuje się inaczej, jeśli otrzyma komunikat "Opcjonalny". – LopSae