将数组数据保存为用户默认值并在表视图中加载数组

时间:2018-03-18 07:38:33

标签: arrays swift nsuserdefaults

我创建了一个数组,我将数据(类型为Double)填充到表视图中。但是当应用程序关闭时,所有数据都会消失!我无法将阵列保存为用户默认值,因此当用户关闭应用并再次打开它时,所有信息仍然会填充并可供查看。

我设置了一个名为moneySpentArray的数组,该数组包含所有用户输入的事务。用户单击“提交”后,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-当View加载时,我使用array.reduce将数组中的值加起来并将其显示在名为“youSpentThisMuch”的文本标签中 - 并且此标签下方将是表格view,它还包含数组中的所有单个索引量。我很困惑在何时何地实现用户默认值,以便当用户通过上面的IBAction输入新的金额时,它会自动将数组存储和更新为新的用户默认值。因此,即使应用程序已关闭,其阵列历史记录仍可供查看。

override func viewDidLoad() {
    super.viewDidLoad()

    let arraySum: Double = AddSubtractMoneyController.moneySpentArray.reduce(0.0, +)
    youSpentLabel.text = "\(arraySum)"

    }

1 个答案:

答案 0 :(得分:0)

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)"
}