如何使用 userDefaults 保存打印数组(swift 3)

how to use userDefualts to save printed array (swift3)

如何使用 userDefualts 保存我的数组条目以确保它们在用户退出应用程序时重新出现。我正在尝试使用 userDefualts 来保存 var numbersWithCreationDate

  import UIKit

    class ViewController: UIViewController {
    @IBOutlet var entry: UILabel!
             var numbersWithCreationDates = [(Int,String)]()
       @IBOutlet var label: UITextField!

        @IBOutlet var scrolView: UIScrollView!


    @IBAction func enterScore(_ sender: Any) {

    if let text = label.text {
        if let number = Int(text){
               // let numberAndDate = (number,Date())

            let date = Date().description
            let numberAndDate = (number, date.substring(to: date.characters.index(of: "+")!))
                numbersWithCreationDates.insert(numberAndDate, at: 0)
                        //line in question
           entry.text = numbersWithCreationDates.map { "\([=10=].0)| \([=10=].1)" }.joined(separator:"\n\n")
            UserDefaults.standard.set(numbersWithCreationDates, forKey: "numbersWithCreationDates")
            UserDefaults.standard.synchronize()
            }}

        else {
        entry.text = "Please Enter Number"

        }

// 让默认值 = UserDefaults.standard // defaults.set(numbersWithCreationDates, forKey: "SavedIntArray")

        }

                  }
extension Date {
    static var formattedNow: String {
        let now = Date()
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
        dateFormatter.timeZone = TimeZone(identifier: "EST")
        return dateFormatter.string(from: now)
    }}

要设置标准默认值:

UserDefaults.standard.set(numbersWithCreationDates, forKey: "numbersWithCreationDates")
UserDefaults.standard.synchronize()

您可能需要在字典定义中使用 class NSNumber 而不是 Int (但是,也许不需要,键和变量需要遵守 NSCopying 才能保存为默认值)

检索:

let numbersWithCreationDates = UserDefaults.standard.object(forKey: "numbersWithCreationDates") as! [Int:String]