2016-12-08 55 views
0

我正在創建一個保存按鈕,其中用戶使用NSUserDefaults單擊並存儲信息。當用戶再次加載應用程序並點擊顯示按鈕時,應該顯示之前存儲的所有信息。例如如何檢索存儲在NSUserDefaults中的所有值?

星期一用戶將值5倍:20,30,40,50,60

星期二什麼。

週三沒事。

週四同一用戶插入:30,20,50,80個

週五值是:40,20

現在在星期六,當用戶點擊顯示,則數據應顯示: 20,30 40,50,60,30,20,50,80,40,20

到目前爲止,我的編碼是:

@IBOutlet weak var dayTB: UITextField! 

@IBOutlet weak var numTB: UITextField! 

@IBOutlet weak var showLabel: UILabel! // displays all the values stored 

var Money = 0 
@IBAction func saveBtn(_ sender: Any) { 
    Money += 1 
    var MoneyNumberString:String = String(format: "Dollars:%i", Money) 
    self.showLabel.text = (string: MoneyNumberString) 
    let defaults: UserDefaults = UserDefaults.standard 
    defaults.set(MoneyNumberString, forKey: "money") 
    defaults.synchronize() 
} 

@IBAction func showbtnact(_ sender: Any) { 
    let defaults: UserDefaults = UserDefaults.standard 
    var money = defaults.value(forKey: "money") as? String 
    showLabel.text! = money! 
} 

希望有這個問題的解決方案:)謝謝

+0

我剛編輯我的代碼,因爲這是錯 –

+0

雖然這不是codereview.SE,我有一兩件事來指出:你不應該用大寫字母(關於'var Money = 0')開始變量/常量名稱,除非你絕對確定它們永遠不會被' nil'(關於'money!'),並且在使用setter的時候沒有必要強制展開'showLabel.text!'。只是'showLabel.text = ...'會起作用。另外,如果你不改變屬性,沒有理由將它們聲明爲變量,例如'var money'和'var MoneyNumberString'可以用'let'聲明爲常量。 – xoudini

+0

嗨@xoudini,我能夠獲取記錄,但最後保存的記錄,我想檢索之前保存並顯示的所有信息。它不會按預期顯示所有的值。任何其他方法?謝謝 –

回答

1

當你保存的值,你需要做的是:

  var ary_Values = NSMutableArray() 

      if UserDefaults.standard.value(forKey: "money") != nil 
      { 
       let arr = UserDefaults.standard.value(forKey: "money") as! NSArray 

       for oldObj in arr 
       { 
        ary_Values.add(oldObj) 
       } 

       ary_Values.add(self.showLabel.text) 
      } 

      UserDefaults.standard.set(ary_Values, forKey: "money") 
      UserDefaults.standard.synchronize() 
相關問題