[英]Swift: how can I use an 'AnyClass' variable to define what type is inside an array?
以下代码应合理清晰地解释我想做的事情。 当然,这会产生编译时错误。
以下代码打算做什么的正确方法是什么?
protocol FilterableDataSource {
var dataClass: AnyClass { get }
var data: [dataClass.dynamicType] { get }
}
您不能在协议中使用泛型,但是如果尝试使用Swift,它会给您一个提示-关联的类型。 代码很少能清楚地说明意图,但是我想您要实现的目标是...
protocol FilterableDataSource {
typealias T
var data: [T] { get }
}
class MyData { }
class MyClass: FilterableDataSource {
typealias T = MyData
var data: [MyData] { return [MyData]() }
}
print(MyClass().data.count)
我将使用AnyObject
代替AnyClass
。 然后,您可以将其转换为所需的内容。
我相信您要做的是在协议中定义一个类型别名要求。
protocol FilterableDataSource
{
typealias DataClass : AnyObject
var data: [DataClass] { get }
}
class PersonDataSource:FilterableDataSource
{
typealias DataClass = Person
var data[Person] = []
}
因此,不是要求可过滤的数据源定义包含该类的变量,而是要求它们为data []变量的元素定义类型别名。 理想情况下,您的数据类具有除AnyObject之外的公共祖先,您可以将其用作类型别名限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.