将数组数据保存为用户默认值并在 table 视图中加载数组
saving array data as user default and loading array in table view
我创建了一个数组并将数据(Double 类型)填充到 table 视图中。但是当应用程序关闭时,所有数据都会消失!我无法将数组保存为用户默认值,这样当用户关闭应用程序并再次打开它时,所有信息仍会填充并可供查看。
我设置了一个名为 moneySpentArray 的数组,该数组包含所有用户输入的交易。用户点击 "submit" 后,IB 操作获取输入并通过名为 addToMoneySpentArray
的函数发送它
@IBAction func submitNewInfo(_ sender: UIButton) {
AddSubtractMoneyController.addToMoneySpentArray(amountISpent: Double(outputLabel.text!)!)
}
下面是我也发送数据的 addToMoneySpentArray 函数,然后将该金额附加到 'moneySpentArray'。
class func addToMoneySpentArray( amountISpent: Double) {
moneySpentArray.append(amountISpent)
print(moneySpentArray)
}
现在在我的 SpendingHistoryVC 中 - 当视图加载时,我使用 array.reduce 将数组中的值相加,并将其显示在名为 "youSpentThisMuch"- 和下方的文本标签中此标签将是 table 视图,它还包含数组中所有单独的索引量。我对何时何地实施用户默认值感到困惑,以便当用户通过上面的 IBAction 输入新金额时,它会自动存储数组并将其更新为新的用户默认值。因此,即使应用程序关闭,它们的数组历史记录仍然可以查看。
override func viewDidLoad() {
super.viewDidLoad()
let arraySum: Double = AddSubtractMoneyController.moneySpentArray.reduce(0.0, +)
youSpentLabel.text = "\(arraySum)"
}
在addToMoneySpentArray
保存数据:
class func addToMoneySpentArray( amountISpent: Double) {
moneySpentArray.append(amountISpent)
UserDefaults.standard.set(moneySpentArray, forKey: "moneySpent")
print(moneySpentArray)
}
并在 viewDidLoad
中加载它
override func viewDidLoad() {
super.viewDidLoad()
let moneySpentArray = UserDefaults.standard.array(forKey: "moneySpent") as? [Double] ?? [Double]()
AddSubtractMoneyController.moneySpentArray = moneySpentArray
let arraySum = moneySpentArray.reduce(0.0, +)
youSpentLabel.text = "\(arraySum)"
}
我创建了一个数组并将数据(Double 类型)填充到 table 视图中。但是当应用程序关闭时,所有数据都会消失!我无法将数组保存为用户默认值,这样当用户关闭应用程序并再次打开它时,所有信息仍会填充并可供查看。
我设置了一个名为 moneySpentArray 的数组,该数组包含所有用户输入的交易。用户点击 "submit" 后,IB 操作获取输入并通过名为 addToMoneySpentArray
的函数发送它@IBAction func submitNewInfo(_ sender: UIButton) {
AddSubtractMoneyController.addToMoneySpentArray(amountISpent: Double(outputLabel.text!)!)
}
下面是我也发送数据的 addToMoneySpentArray 函数,然后将该金额附加到 'moneySpentArray'。
class func addToMoneySpentArray( amountISpent: Double) {
moneySpentArray.append(amountISpent)
print(moneySpentArray)
}
现在在我的 SpendingHistoryVC 中 - 当视图加载时,我使用 array.reduce 将数组中的值相加,并将其显示在名为 "youSpentThisMuch"- 和下方的文本标签中此标签将是 table 视图,它还包含数组中所有单独的索引量。我对何时何地实施用户默认值感到困惑,以便当用户通过上面的 IBAction 输入新金额时,它会自动存储数组并将其更新为新的用户默认值。因此,即使应用程序关闭,它们的数组历史记录仍然可以查看。
override func viewDidLoad() {
super.viewDidLoad()
let arraySum: Double = AddSubtractMoneyController.moneySpentArray.reduce(0.0, +)
youSpentLabel.text = "\(arraySum)"
}
在addToMoneySpentArray
保存数据:
class func addToMoneySpentArray( amountISpent: Double) {
moneySpentArray.append(amountISpent)
UserDefaults.standard.set(moneySpentArray, forKey: "moneySpent")
print(moneySpentArray)
}
并在 viewDidLoad
中加载它
override func viewDidLoad() {
super.viewDidLoad()
let moneySpentArray = UserDefaults.standard.array(forKey: "moneySpent") as? [Double] ?? [Double]()
AddSubtractMoneyController.moneySpentArray = moneySpentArray
let arraySum = moneySpentArray.reduce(0.0, +)
youSpentLabel.text = "\(arraySum)"
}