[英]Swift: How to initialize instance of a class within a class
我对尝试在类中初始化数组实例时出现的错误感到困惑。 下面的注释是xcode 6显示的错误。
我创建了一个类。 它具有NSMutableArray的实例。 我想初始化数组(因此调用self.instancename.init())。 如果我不这样做,它会抱怨。 如果我这样做,它会抱怨。
进口基金会
class testclass:NSObject {
var list_of_things:NSMutableArray;
init (){ // Designated initializer for 'testclass' cannot delegate (swith self.init);
// did you means this to be a convenience initializer?
self.list_of_things.init();
// 'init' can only refer to the initializers of 'self' or 'super'
super.init()
// Initializer cannot both delegate ('self.init') and chain to a superclass
// initializer ('super.init')
}
}
您需要为变量分配一个值,该变量中没有任何东西可以调用init
:
init () {
self.list_of_things = NSMutableArray()
super.init()
}
还有一些注意事项:
这将是我对测试类的清理版本:
class TestClass {
var listOfThings: [AnyObject]
init () {
self.listOfThings = []
super.init()
}
}
实际上,如果您只想初始化为空数组,则甚至无需实现init或显式指定类型:
class TestClass {
var listOfThings = []
}
要调用另一个类的初始化程序,只需像这样调用它:
self.list_of_things = NSMutableArray()
不需要隐式调用init()
函数,这是在将()添加到类名时隐含的。
您还可以在创建属性时将其初始化,如下所示:
var list_of_things:NSMutableArray = NSMutableArray()
那不是您在NSMutableArray上调用init的方式。
class testclass:NSObject {
var list_of_things:NSMutableArray
init (){
self.list_of_things = NSMutableArray()
super.init()
}
}
并摆脱那些分号! 这是什么? 上个星期?
端到端答案。 没有超类,使用Swift数组,在声明端使用init list_of_things,在init()
没有要初始化的超类。
class testClass {
var list_of_things = []
init () {
}
}
126> var abc = testClass ()
abc: testClass = {
list_of_things = @"0 objects"
}
127> abc.list_of_things
$R55: __NSArrayI = @"0 objects"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.