我有一个带有数组的类,其值来自文本文件。我想读取这个值一次并将它们存储在共享变量中,使其他类可以访问该值。
我怎样才能在Swift中做到这一点?
更新
假设我有三类动物,其中哪一类可以在一组来自不同表格的地方找到(每只动物都有你的动物,每种动物的结构都不同)。我希望能够使用它们链接到特定的类:
请注意,我需要加载一次数据。如果我没有共享变量并且需要将它放在类之外,我需要为方法指定不同的名称,如:
在这种情况下我们没有遗产
答案 0 :(得分:3)
将变量声明在文件的顶层(任何类之外)。
注意:文件顶层的变量会被懒惰地初始化!因此,您可以将变量的默认值设置为读取文件的结果,并且在您的代码首先询问变量的值之前,实际上不会读取该文件。酷!
类似地,您可以在文件的顶层(任何类之外)声明枚举或结构,现在它是全局的。这是我自己的代码中的一个例子:
struct Sizes {
static let Easy = "Easy"
static let Normal = "Normal"
static let Hard = "Hard"
static func sizes () -> String[] {
return [Easy, Normal, Hard]
}
static func boardSize (s:String) -> (Int,Int) {
let d = [
Easy:(12,7),
Normal:(14,8),
Hard:(16,9)
]
return d[s]!
}
}
现在任何课程都可以引用Sizes.Easy
或Sizes.boardSize(Sizes.Easy)
,依此类推。使用这种技术,我已经删除了所有"魔术数字"和#34;魔术字符串" (例如NSUserDefault键)来自我的代码。这比在Objective-C中更容易 ,并且它更清晰,因为(如示例所示)struct(或enum)为您提供了一种微型命名空间。