找出Any是否为未指定类型

时间:2015-01-30 18:50:34

标签: swift

我想将一个对象和一个Type传递给一个方法,并找出该对象是传入的Type。我认为它适用于AnyObject。但是Any也可以是Strcuts,Strings,Doubles ..

我使用AnyObject的解决方案如下所示:

class AClass {

}

class BClass {

}
class TypeCheck {
    var type : AnyObject.Type;
    init( type: AnyObject.Type ) {
        self.type = type;
    }
    func isOfType( object: AnyObject ) -> Bool {
        return self.type === object.dynamicType.self ? true : false;
    }
}

var typeCheck = TypeCheck( type: AClass.self );
var a = AClass();
var b = BClass();
println( "Object \(a) is of checked Class: \(typeCheck.isOfType(a))" );//true
println( "Object \(b) is of checked Class: \(typeCheck.isOfType(b))" );//false

就像在这个使用TypeCheck.type的例子中一样,我需要存储我想要检查的类型。这有什么解决方案吗?我发现的只是具有特定类型的解决方案或仅适用于对象。

1 个答案:

答案 0 :(得分:0)

您可以使用泛型更简单地执行此操作:

import UIKit

class AClass {

}

class BClass {

}


class TypeCheck<T> {
   func isOfType<U>(arg: U) -> Bool {
        return arg is T
    }

}

var typeCheck = TypeCheck<AClass>();
var a = AClass();
var b = BClass();

println( "Object \(a) is of checked Class: \(typeCheck.isOfType(a))" );//true
println( "Object \(b) is of checked Class: \(typeCheck.isOfType(b))" );//false