Swift:在函数失败时向下转换为泛型类型

时间:2014-06-06 00:42:54

标签: generics swift downcast

我有一个泛型函数,它接受任何对象的值和类型为T的输入输出参数。我想通过向下转换值来输入输出参数为任意对象的值,以输入类型T. / p>

func genericFunction<T>(value:AnyObject, inout object:T) {

    if let castedValue = value as? T {
        object = castedValue
    }
}

当我调用我的函数时,没有设置对象的值,因为向下转换失败。

var object:String = "oldValue"
var newValue:String = "newValue"

genericFunction(newValue, &object)
println(object) // prints oldValue

1 个答案:

答案 0 :(得分:1)

通过将AnyObject更改为“Reflectable”来解决此问题。也使用“Any”。 String实际上并不符合AnyObject。

func genericFunction<T>(value:Any, inout object:T) {
    if let castedValue = value as? T {
        object = castedValue
    }
}

编辑: Any是我想要使用的类型,因为Reflectable意味着用于Reflection和String恰好符合它。

相关问题