2017-02-17 121 views
-2

我有這些陣列:如何內部變量數組添加到一個數組

var inactiveLocationArray = [String]() 
var activeLocationArray = [String]() 

我想將它們添加到像這樣的數組:

let locationArrays: [[String]] = [self.inactiveLocationArray,self.activeLocationArray] 

,但它給錯誤: 價值型的(NSObject的) - >() - >控制器沒有構件activeLocationArray

此實際工作:

let locationArrays: [[String]] = [["test", "testas"]] 
+4

「不起作用」是什麼意思? – matt

+1

[如何初始化相互依賴的屬性]的可能的副本(http://stackoverflow.com/q/25854300/2976878) – Hamish

+1

您需要在VC加載後設置'locationArrays'的值。當你聲明'var locationArrays:[[String]]!',那麼在'viewDidLoad'中,你可以說'self.locationArrays = [inactiveLocationArray,activeLocationArray]' – Pierce

回答

1

你的代碼都編譯和完美的作品:

var inactiveLocationArray = [String]() 
var activeLocationArray = [String]() 
let locationArrays: [[String]] = [inactiveLocationArray,activeLocationArray] 

也許它不會做你期望慾望,但它確實工作。結果就是一個陣列數組,正如預期的那樣。

but it gives error: Value of type (NSObject) ->() -> Controller has no member activeLocationArray

那是因爲你的代碼是在錯了地方。所有可執行代碼必須在某種功能內。你的不是。例如:

class Controller : NSObject { 
    func someMethod() { 
     var inactiveLocationArray = [String]() 
     var activeLocationArray = [String]() 
     let locationArrays: [[String]] = [inactiveLocationArray,activeLocationArray] 
    } 
} 

如果移動let locationArrays線出其含有的方法(在這裏,someMethod)的,當然,它不會編譯。但是這與數組無關。它與這一行是可執行代碼並且不能在以太網中生存有關。