在下面放一个操场,显示我的问题和它的输出。我需要编写一个可以传递AnyObject?
的方法,然后确定该对象的类型。如果它是一个数组,我还需要确定它的元素类型。这在调用方法之前工作正常,但在我无法获得类型之后。具体而言,由于铸造,元素类型不会恢复正常。
游乐场
//: Playground - noun: a place where people can play
import UIKit
import Foundation
extension Array {
var ElementType: Element.Type {
return Element.self
}
}
class tester {
static func test(array:AnyObject?){
print("ATYPE: ", array.dynamicType)
print("ATYPE Good: ", array!.dynamicType)
print("ETYPE: ", (array as! Array<AnyObject>).ElementType)
}
}
let myArray: Array<NSString> = []
print("ATYPE ORIG: ", myArray.dynamicType)
print("ETYPE ORIG: ", myArray.ElementType)
tester.test(myArray)
输出
"ATYPE ORIG: Array<NSString>\n"
"ETYPE ORIG: NSString\n"
"ATYPE: Optional<AnyObject>\n"
"ATYPE Good: Array<NSString>\n"
"ETYPE: AnyObject\n"