2014-09-28 64 views
0

我有一個類,MyClass,並在另一個類我有一個全局變量數組:斯威夫特:對標數組自定義類型

var myArray:[MyClass] 

MyClass我沒有任何陣列。現在

,如果我想這樣做:

for index in 0..10 { 
    self.myArray[index] = //a new object 
} 

我得到一個錯誤MyClass沒有一個下標。任何想法爲什麼?請記住MyClass沒有任何數組。

更多的代碼向你展示我的意思:

class TheirClass { 
    var myArray: [MyClass] = [] // or use an initializer 

    func test() -> Void { 
    for index in 0..10 { 
     self.myArray[index] = MyClass() 
    } 
    } 
} 

class MyClass { 
    var prop1 = "" 
    var prop2 = 0 
} 

回答

0

如果要調用從另一個類變種,你就必須解決這個問題像我這樣做如下:

class TheirClass { 
    var myArray: [MyClass] = [] // or use an initializer 
} 

class MyClass { 
    var objectArray = TheirClass().myArray 
} 

不知道如果這是你計劃做或不做的。讓我知道,我可以修改代碼以符合您的目的。

+0

問題不在於啓動數組。問題在於使用索引訪問它的項目: – Horatiu 2014-09-28 15:36:09

+0

難題,但您必須從它來自的類中調用該數組。 myArray不存在於你當前的課程中,除非你做了我已經展示過的內容。如果你這樣做,讓我知道,我會進一步。 – 2014-09-28 15:38:33

+0

你是對的明尼蘇達州史蒂夫。當我改變啓動方式時,錯誤消失了。所以謝謝你的評論,並且遺憾的是我直到現在才意識到它。 – Horatiu 2014-09-29 06:50:03

0

你有..在Swift中不存在的代碼。你的意思可能是...,但也有..<

但是,您的初始化程序中有一個大小爲零的數組,這意味着您無法向其中添加值。您必須首先創建一個合適大小的新數組,或使用myArray += [MyClass()]追加到它。

另請注意,-> Void是不必要的 - 如果您沒有返回類型,它將隱式地爲void類型。