该项目需要一个大字典,所以我把它放在anohher swift文件中,使代码看起来干净。但我收到了“预期声明”错误。
class AA{
var a:Dictionary<String,Array<String>> = [:]
a["a"] = ["aa", "aaa"] // error: Expected declaration
...
...
}
我希望得到这样的结果:
let aa = AA.a
到现在为止,我必须将它添加到func中才能获得它。
class AA{
func getVar()->Dictionary<String,Array<String>>{
var a:Dictionary<String,Array<String>> = [:]
a["a"] = ["aa", "aaa"]
a["b"] = ["bb", "bbb"]
return a
}
}
解决这个问题的简单方法是什么?
@dasblinkenlight你的建议是从另一个viewController获取变量,它与我的有点不同。
答案 0 :(得分:1)
问题不在于您在另一个文件中有字典,而是在方法之外进行了分配。
用声明替换作业将解决此问题:
class AA {
static let a = [
"a" : ["aa", "aaa"]
, "b" : ["bb", "bbb", "bbbb"]
, "c" : ["cc"]
]
}
现在您可以在其他课程中使用AA.a
。
答案 1 :(得分:0)
根据我的理解,您无法从另一个类访问本地变量,您只能使用该类方法访问它。
从另一个类访问var,
var someVariable: Type = xValue
现在创建该类的对象,您已声明变量&amp;访问它,
var getThatValue = yourViewControllerObject.someVariable
在同一类中访问var,
self.yourVar
或者,
static let yourProperty = 0
ClassName.yourProperty // & for swift 3 it would be type(of: self).yourProperty
这个有趣的话题在以下链接中进行了很好的讨论,
Access variable in different class - Swift
Access static variables within class in Swift
在你的情况下,我认为你必须将var声明为方法范围的静态