我已经将参数传递给AnyObject的函数,因为可以传递任何东西.有没有办法通过动态获取对象的类型?
通常这是泛型的.有一个AnyObject在代码中不与ObjC交互的很少的理由.如果您根据类型执行不同的操作,那么您实际上可能会使用重载.
也就是说,有几种方法来访问类型.通常,您希望根据类型运行不同的代码,因此您可以使用开关:
let x:AnyObject = "asdf" switch x { case is String: println("I'm a string") default: println("I'm not a string") }
要么
let x:AnyObject = "asdf" switch x { case let xString as String: println("I'm a string: \(xString)") default: println("I'm not a string") }
或者你可以使用if:
if let string = x as? String { println("I'm a string: \(string)") }
有关更多讨论,请参阅Swift编程语言中的“为Any和AnyObject类型转换”.
但是,除非您使用ObjC代码,否则很少有理由使用Any或AnyObject.泛型和超载是用于解决Swift中这些问题的工具.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。