如何在Swift中子类化数组类?

Ale*_*lex 11 arrays inheritance swift

我是斯威夫特的新人.我有一个基类:

class foo{}
Run Code Online (Sandbox Code Playgroud)

我想实现一个foo集合类:

class foos: Array<foo>{}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨:

继承自非协议,非类型的'Array'

我尝试过其他语法(例如[foo]NSMutableArray<foo>),但没有一个通过编译器检查.

这应该很简单,但我整天用Google搜索,无法弄明白.有谁知道它是否可能,如果是,是正确的语法?

Jos*_*osh 15

Swift的Array类型是一个结构,在Swift中,基类必须是实际的类(即),class Foo而不是结构.

因此Array,不幸的是,你不能通过继承做你想做的事.但是,您可以将数组存储为类中的字段并将方法转发给它,可能实现您要支持的任何协议等等.


erd*_*ser 5

在Swift中,Array是一个结构,而不是一个类.要拥有一个数组子类的类,您需要使用NSArray,它的Objective-C对应物.

例如,

class Foo: NSArray{}
Run Code Online (Sandbox Code Playgroud)

  • 具有讽刺意味的是,NSArray最近实际上是通用的. (2认同)