[英]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.