[swift-users] Can I do dynamic casting?

Johan Segerfeldt johan.segerfeldt at me.com
Thu Aug 25 05:47:05 CDT 2016


Zhaoxin,

You are trying to cast to a type which is defined by a variable at runtime.
Casting with `as` is done at compile-time. The variable has no defined value at this time.

The compiler cannot infer what the value of a variable is going to be.
It can only infer types by static analysis.


Regards
Johan

> Is that possible to do dynamic casting?
> 
> My code:
> 
>> 
>> importFoundation
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> letarray = [1,2,3,4,5]
>> 
>> 
>> 
>> letdictionary:[String:Any] = ["numbers":array]
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> ifletvalue =dictionary["numbers"] {
>> 
>> 
>> 
>> lettype = type(of: value)
>> 
>> 
>> 
>> print(type)// Array<Int>
>> 
>> 
>> 
>> letnumbers = valueas!Array<Int>// [1, 2, 3, 4, 5]
>> 
>> 
>> 
>> //let numbers2 = value as! type // error: use of undeclared type 'type'
>> 
>> 
>> 
>> }
>> 
>> 
> As you can see, the dynamic casting leads an error. Is there a way to do this? Thanks.
> 
> 
> 
> 
> 
> 
> Zhaoxin
> 
> 
> 
> 
> 


More information about the swift-users mailing list