我有一个变量。我做到了所有场景(那里有三个)知道它是什么。我打电话给它"钱"并附上了一个Interger。但它不会拯救。因此,当我第二个场景增加20美元的钱时,现在这笔钱应该有20美元。当我回到第一个场景检查它不在那里它说没有钱。有没有人知道如何建立一个所有场景都可以识别的金钱系统并为此增加资金" Money"变量。有点像你如何保存高分并知道即使你关闭应用程序仍然保存高分仍然存在
答案 0 :(得分:0)
管理全局变量的解决方案是Singleton
类。
该类在第一次被调用时被实例化,并在应用程序的生命周期内持续存在。
该类包含提到的变量money
以及虚拟字符串变量somethingElse
。您可以根据需要添加任意数量的变量。
class DefaultsManager {
// MARK: - Variables
var money : Int = 0
var somethingElse : String = ""
// MARK: - Shared Instance
class var sharedManager : DefaultsManager {
struct Singleton {
static let instance = DefaultsManager()
}
return Singleton.instance
}
init()
{
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["money" : 0, "somethingElse" : ""];
defaults.registerDefaults(defaultValues)
}
func readDefaults()
{
let defaults = NSUserDefaults.standardUserDefaults()
money = defaults.integerForKey("money")
somethingElse = defaults.stringForKey("somethingElse")!
}
func saveDefaults()
{
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(money, forKey:"money")
defaults.setObject(somethingElse, forKey:"somethingElse")
defaults.synchronize()
}
}
可以从任何地方访问课程。
获取共享实例
let manager = DefaultsManager.sharedManager
获取变量money
var currentDeposit = manager.money
从用户默认值
读取和写入变量manager.readDefaults()
manager.saveDefaults()
如果添加更多变量,则必须在init
中注册它们,并根据其他变量添加行以进行读取和保存。