Downcast from Any to a protocol

后端 未结 4 1219
南旧
南旧 2020-12-09 18:17

I have the following code. How can I resolve the error in the last line?

protocol Animal {
    func walk()
}

struct Cat: Animal {
    func walk() {}

    in         


        
4条回答
  •  萌比男神i
    2020-12-09 19:06

    As far as I have been able to observe, AnyObject can only be downcast to an instances of class types(†) and Any can only be downcast to types (class or otherwise), it is not possible to cast them to a protocol.

    I don't know if I would qualify this as a bug or not, if this holds then perhaps it was implemented this way for a good reason - but @Bryan's workaround (casting to a type first and then to a protocol) at least "resolves the error"!

    (†) notable exceptions include being able to downcast from AnyObject to the core data types Int, String, etc.

提交回复
热议问题