繁体   English   中英

Swift:如何使用“ AnyClass”变量定义数组内部的类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM