我已将参数传递给AnyObject类型的函数,因为任何东西都可以传递给它.有没有办法动态地传递Object的类型?
new*_*cct 30
目前尚不清楚你的问题中的"类型"是什么意思.对于Swift中任何类型的任何值,您可以获得如下的动态运行时类型:
theVariable.dynamicType
Run Code Online (Sandbox Code Playgroud)
你可以用它做什么是另一个问题.
Swift 3版本与@jojodmo的提示:
type(of: theVariable)
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 12
通常这是泛型的用途.拥有一个AnyObject不与ObjC交互的代码很少有充分的理由.如果您正在根据类型执行不同的操作,那么您实际上可能意味着使用重载.
也就是说,有几种方法可以访问该类型.通常,您希望根据类型运行不同的代码,因此您可以使用a switch:
let x:AnyObject = "asdf"
switch x {
case is String: println("I'm a string")
default: println("I'm not a string")
}
Run Code Online (Sandbox Code Playgroud)
要么
let x:AnyObject = "asdf"
switch x {
case let xString as String: println("I'm a string: \(xString)")
default: println("I'm not a string")
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用if:
if let string = x as? String {
println("I'm a string: \(string)")
}
Run Code Online (Sandbox Code Playgroud)
有关更多讨论,请参阅Swift编程语言中的"为任意和AnyObject类型转换".
但是,除非你使用ObjC代码,否则很少有理由使用Any或AnyObject.泛型和重载是旨在解决Swift中的这些问题的工具.
| 归档时间: |
|
| 查看次数: |
11476 次 |
| 最近记录: |