我对尝试在类中初始化数组实例时出现的错误感到困惑。以下评论是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')
}
}
答案 0 :(得分:4)
您需要为变量赋值,该变量中没有任何内容可以调用init
:
init () {
self.list_of_things = NSMutableArray()
super.init()
}
还有一些注意事项:
这将是我的测试类的清理版本:
class TestClass {
var listOfThings: [AnyObject]
init () {
self.listOfThings = []
super.init()
}
}
实际上,如果你只想初始化为一个空数组,你甚至不需要实现init或明确指定类型:
class TestClass {
var listOfThings = []
}
答案 1 :(得分:2)
要调用另一个类的初始值设定项,只需将其称为:
self.list_of_things = NSMutableArray()
没有必要隐式调用init()
函数,在将类()添加到类名时隐含了这一功能。
您还可以在创建属性时对其进行初始化,如下所示:
var list_of_things:NSMutableArray = NSMutableArray()
答案 2 :(得分:0)
这不是你如何在NSMutableArray上调用init。
class testclass:NSObject {
var list_of_things:NSMutableArray
init (){
self.list_of_things = NSMutableArray()
super.init()
}
}
摆脱那些分号!这是什么?上周?
答案 3 :(得分:0)
端到端的答案。没有超类,使用Swift数组,在声明端初始化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"