从Any转向协议

Kha*_*yen 14 ios swift

我有以下代码.如何解决最后一行中的错误?

protocol Animal {
    func walk()
}

struct Cat: Animal {
    func walk() {}

    init() { }
}

var obj: Any = Cat()
var cat = obj as Animal // ERROR: cannot downcast from Any to unrelated type Animal
Run Code Online (Sandbox Code Playgroud)

new*_*cct 13

更新:这已在Swift 1.2+(Xcode 6.3+)中修复.Xcode 6.3测试版发行说明:

动态转换("as!","as?"和"is")现在可以使用Swift协议类型,只要它们没有关联类型.


只能检查协议一致性(其包括is,as,和as?用)@objc协议.Animal不是@objc.

请参阅Swift本书的" 检查协议一致性"部分.

注意

仅当协议标有@objc属性时,才能检查协议一致性