确定数组元素参数的对象类型

时间:2016-09-28 17:18:16

标签: arrays swift casting dynamictype

在下面放一个操场,显示我的问题和它的输出。我需要编写一个可以传递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"

0 个答案:

没有答案