繁体   English   中英

如何使用UserDefaults启动的应用之间保存状态?

[英]How do I save state between app launched using UserDefaults?

我尝试使用UILabel显示时间/日期(日期或NSDate),并在启动应用程序时使用每个先前应用程序启动的DateFormatter格式化。

因此,每次我启动该应用程序时,屏幕上都会显示另一个日期。

例如,如果这是第一次启动,它将显示Nov 18 2018, 13:15 第二个启动应该显示

Nov 18 2018, 13:15 
Nov 18 2018, 13:16

第三次启动它应该显示类似

 Nov 18 2018, 13:15 
 Nov 18 2018, 13:16
 Nov 18 2018, 13:17

目前,我的代码仅显示启动时间,但不记录以前的启动。 如果有人可以给我一些有关如何使用UserDefaults实现此目标的指导,我将不胜感激!

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var Timelabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        let dateFormatterPrint = DateFormatter()
        dateFormatterPrint.dateFormat = "MMM dd, yyyy HH:mm:ss"

        let DisplayTime: Date = Date()
        print(dateFormatterPrint.string(from: DisplayTime))
        Timelabel.text = "Current Time: \(dateFormatterPrint.string(from: DisplayTime))"

    }

}

如下使用

class ViewController: UIViewController {

    // your other @IBOutlet / properties
    let ARR_KEY = "launch_time"

    override func viewDidLoad() {
        // your other code.
        // remove your TimeLabel.text = ... line

        let formattedDateTime = dateFormatterPrint.string(from: DisplayTime)


        // storing the launch date time
        if var arr = UserDefaults.standard.stringArray(forKey: ARR_KEY){
            arr.append(formattedDateTime)
            UserDefaults.standard.set(arr, forKey: ARR_KEY)
        } else {
            UserDefaults.standard.set([formattedDateTime], forKey: ARR_KEY)       
        }

        displayLaunchTimeInSimpleLabel()
    }

    func displayLaunchTimeInSimpleLabel() {
        if var arr = UserDefaults.standard.stringArray(forKey: ARR_KEY){
               var string = ""
               for launchTime in arr {
                   string = string + launchTime + "\n"
               }
               Timelabel.text = string
         }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM