是否可以检查变量是否是可选的,以及它包装的是什么类型?
可以检查变量是否是特定的可选:
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
Run Code Online (Sandbox Code Playgroud)
但是有可能再次检查任何类型的可选项吗?就像是:
anyThing.dynamicType is Optional.Type // fails since T cant be inferred
// or
anyThing.dynamicType is Optional<Any>.Type // false
Run Code Online (Sandbox Code Playgroud)
一旦知道你有一个可选的,检索它包装的类型:
// hypothetical code
anyThing.optionalType // returns String.Type
Run Code Online (Sandbox Code Playgroud) swift ×1