簡體   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