[英]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.