protocol Parent {
var children: [AnyObject] { get set }
}
class Foo {
}
class Bar: Parent { //error happens here
var children = [Foo]()
init() {}
}
我收到错误“类型‘Object’不符合协议‘Parent’。我收到此错误的原因是因为我将孩子定义为 Foo 而不是 AnyObject 的数组。有什么方法可以使这项工作正常进行吗?
协议中要求 AnyObject 意味着children
array must能够接受AnyObject
条目。但听起来你想要Bar
的孩子只能Foo
对象。
相反,您可以给协议一个关联类型 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html#//apple_ref/doc/uid/TP40014097-CH26-ID189:
protocol Parent {
associatedtype Child
var children: [Child] { get set }
}
class Foo { }
class Bar: Parent {
var children = [Foo]()
init() {}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)