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

时间:2016-03-15 22:14:18

标签: arrays swift class inheritance swift2

我正在摆弄制作一个cocoapod,我正在努力创建一个类Sub OverflowCustomMath() Dim a As Integer Dim b As Integer Dim c As Long a = 20000 b = 15000 On Error GoTo Err: Debug.Print a + b Err: If (Err.Number = 6) Then 'apply your custom overflow math, as for e.g. Debug.Print CLng(a) + CLng(b) End If End Sub 的子类。

我想从Array转到子类的原因是因为ArrayArray在Swift中被区别对待。

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

NSArray

但如果我试试这个:

class Test : NSArray {}

或者这个:

class Test : Array {}

我收到错误。

大多数情况下我想要的原因是我可以使用这样的函数:

class Test : [AnyObject] {}

对此:

let i = myArray.randomObject()

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

2 个答案:

答案 0 :(得分:7)

您可以通过扩展程序向Array添加方法。类似的东西:

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

现在你可以myArray.randomObject()其中 myArray 属于数组

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

答案 1 :(得分:0)

您不能将Array作为子类,因为它是一个结构。然而,NSArray是一个对象,因此您可以将其子类化。我不确定你要完成什么,但你可能想要符合CollectionType协议,结构和对象都可以做,以及枚举。