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)
我能做什么的想法(相反可能)?
您可以通过扩展名向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中被子类化.