【发布时间】:2014-07-22 06:55:57
【问题描述】:
我正在尝试在符合协议的类的子类中向下转换协议所需的多维数组属性。但是,目前编译器在我这样做时给了我一个错误。错误是:'DataClass' is not identical to 'Any'。
奇怪的是,当属性简化为一维数组时,错误就消失了。这可能是 Swift 的一个错误,还是我不明白 Swift 如何处理多维数组的类型?
这自 Swift 1.0 以来一直存在,所以我觉得我在这里遗漏了一些明显的东西......
我已经在一个易于测试的代码 sn-p 中重现了我的情况:
protocol MyProtocol {
var myProperty: ([[Any]])! { get set }
func myFuncReturn() -> Any
func myFuncParam(param: Any)
}
class MyClass: MyProtocol {
var myProperty: ([[Any]])!
init(myProperty: ([[Any]])!) {
self.myProperty = myProperty
}
func myFuncReturn() -> Any {
return myProperty[0][0]
}
func myFuncParam(param: Any) { }
}
class MySubclass: MyClass {
var myPropertyOver: ([[DataClass]])! {
return myProperty as? ([[DataClass]])
}
init() {
super.init(myProperty: [[DataClass()]])
}
}
class DataClass { }
感谢您的帮助!
【问题讨论】:
标签: multidimensional-array swift protocols subclassing downcast