2017-02-17 87 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)的,当然,它不会编译。但是这与数组无关。它与这一行是可执行代码并且不能在以太网中生存有关。