Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从0开始时将Int保存为UserDefaults_Ios_Swift_Nsuserdefaults - Fatal编程技术网

Ios 从0开始时将Int保存为UserDefaults

Ios 从0开始时将Int保存为UserDefaults,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我希望代码启动一个var num=0。然后在每次点击按钮后,num增加1。我遇到的问题是,当我切换视图控制器并返回到此视图控制器时,它再次从0开始。第一次加载时,Num只能从0开始一个平局。我想使用userdefults来保存数字,这样无论分数如何都会增加 import UIKit class ViewController: UIViewController { var num = 0 let defaults = UserDefaults.standard @IBA

我希望代码启动一个var num=0。然后在每次点击按钮后,num增加1。我遇到的问题是,当我切换视图控制器并返回到此视图控制器时,它再次从0开始。第一次加载时,Num只能从0开始一个平局。我想使用userdefults来保存数字,这样无论分数如何都会增加

import UIKit

class ViewController: UIViewController {
    var num = 0
    let defaults = UserDefaults.standard

    @IBAction func press () {
        num += 1
        defaults.set(num, forKey: "num")
    }
}

您必须从
UserDefaults
初始化
num

将此添加到
viewDidLoad

num = defaults.integer(forKey: "num")
或者只需将您的
var num=0
行更新为:

var num = UserDefaults.standard.integer(forKey: "num")
在这种情况下,不能使用
默认值
变量

  • 在用户默认设置中设置数据后立即调用synchronize(),以便保存数据
  • 将“已设置”值设置回“视图中的数值”将显示为“视图”,并在弹出时从其他屏幕调用此视图 参见代码

    import UIKit
    
    class ViewController: UIViewController {
    
        var num = 0
        let defaults = UserDefaults.standard
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            num = defaults.integer(forKey: "num")
            print("Value of number from defaults \(num)")
        }
    
        @IBAction func press () {
            num += 1
            defaults.set(num, forKey: "num")
            defaults.synchronize()
        }
    }
    

    您是否尝试过使用
    var num=UserDefaults.standard.integer(forKey:“num”)
    ?否,不需要调用
    同步
    。它已经过时了。请阅读文档。请看@rmaddy谢谢你纠正我-synchronize已弃用,并将在将来的版本中使用NS\U弃用宏进行标记。我现在看到了——但他们没有标记——我有Xcode 9.4.1版(9F2000)文档。但如果提到它,他们会将其标记为不推荐。谢谢,从来都不需要。他们现在才开始反对它。