我可以创建一个从Array子类化的类吗?

Cal*_*ter 0 arrays inheritance class swift swift2

我正在摆弄制作一个cocoapod,我正在努力创建一个类来自类的子类Array.

我之所以将其归为子类Array,是因为Array并且NSArray在Swift中被区别对待.

我可以创建一个这样的类:

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

但如果我试试这个:

class Test : Array {}
Run Code Online (Sandbox Code Playgroud)

或这个:

class Test : [AnyObject] {}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.

我想要这个的原因主要是因为我可以使用这样的函数:

let i = myArray.randomObject()
Run Code Online (Sandbox Code Playgroud)

对此:

let i = Test.randomObject(myArray)
Run Code Online (Sandbox Code Playgroud)

我能做什么的想法(相反可能)?

nie*_*bot 7

您可以通过扩展名向Array添加方法.就像是:

extension Array
{
    func randomObject() -> Element { return self[ Int( arc4random_uniform( UInt32( self.count ) ) ) ] }
}
Run Code Online (Sandbox Code Playgroud)

现在你可以做myArray.randomObject()其中myArray的是一个类型的数组


编辑:另外,@ Addison正确地指出结构类型不能在Swift中被子类化.