斯威夫特:我怎样才能使用' AnyClass'变量来定义数组中的类型?

时间:2016-01-31 22:20:05

标签: ios swift

以下代码应该清楚地解释我想要做的事情。当然,这会产生编译时错误。

执行以下代码所需的正确方法是什么?

protocol FilterableDataSource {

    var dataClass: AnyClass { get }
    var data: [dataClass.dynamicType] { get }

}

3 个答案:

答案 0 :(得分:1)

您不能在协议中使用泛型,但如果您尝试,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)

答案 1 :(得分:0)

我会使用AnyObject代替AnyClass。然后你可以把它投入你想要的任何东西。

答案 2 :(得分:-1)

我相信你想要做的是在你的协议中定义一个typealias要求。

self::_getCategoryInfor($tg, $params)[0];

因此,不需要您的可过滤数据源来定义包含该类的变量,而是要求它们为data []变量的元素定义一个类型。理想情况下,您的数据类具有除AnyObject之外的共同祖先,您可以将其用作类型限制。