我不明白为什么我在某个地方找不到这个问题,因为我认为这是一个很常见的问题,所以也许我不是很清醒。对不起,如果是这样的话。
我有prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!)
函数,我找不到哪个类sender
。我不想尝试Foundation
框架的每个类,所以有没有办法在运行时知道它。
当我使用调试器时,我只得到(AnyObject!) sender = (instance_type = Builtin.RawPointer = ...
,这实际上并没有帮助。
答案 0 :(得分:2)
我没有向对象询问其类,而是发现使用“if let”检查它是否是我正在寻找的更“Swifty”。
func inputUnknown(sender : AnyObject) {
if let tableView = sander as? UITableView {
// now you have an object with a defined class
}
else {
// check for other classes or proceed with a default action
}
}
答案 1 :(得分:0)
每个对象都有一个基础dynamicType
属性,理论上,它应该在打印到控制台时显示对象的实际类型。但是,Swift还没有支持可打印的元类型,因此您可以获得ExistentialMetatype
dynamicType
和MetaType
的类{&#39}} ; s类型。为了解决这个问题,您可以将Type
变量转换为AnyObject
,当打印到控制台时,它将打印出Objective C元类型。
if let object = sender {
println(object.dynamicType as AnyObject)
}