我已经研究了两个小时,我发现了一个非常相似的问题,扎伊德·帕坦回答了这个问题。不幸的是,当我使用Zaid在我自己的应用程序中共享的代码时,我没有得到我期望的结果。代码如下:

     override func viewDidLoad() {
    super.viewDidLoad()

    println("Launched")

    func isAppAlreadyLaunchedOnce()->Bool{
        let defaults = NSUserDefaults.standardUserDefaults()

        if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
            println("App already launched")
            return true
        }else{
            defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
            println("App launched first time")
            return false
        }
    }

我添加了println("Launched")以便在日志中看到代码已执行。那很有效。但是,println("App already launched")和/或println("App launched first time")不执行。有什么建议吗?

最佳答案

你在函数中创建了函数。在作用域中移动isAlreadyLaunchedOnce(到与viewDidLoad相同的级别)并从viewDidLoad调用它,或者修改如下代码:

override func viewDidLoad() {
super.viewDidLoad()

println("Launched")

let defaults = NSUserDefaults.standardUserDefaults()
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
    println("App already launched")
    // do something
} else {
    defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
    println("App launched first time")
    // do something
}

}

10-08 06:01