arrays - 将数组数据保存为用户默认值并在 TableView 中加载数组

标签 arrays swift nsuserdefaults

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

我设置了一个名为 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)"

    }

最佳答案

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

关于arrays - 将数组数据保存为用户默认值并在 TableView 中加载数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345570/

相关文章:

ios - 设置捆绑默认值不会设置

ios - 默认 UISwitch 为 YES 然后使用 NSUserDefaults 保存状态

ios - 在 iPhone 5s 上的 iOS 8 Swift 上使用 NSUserDefaults 后启动时出现 EXC_BREAKPOINT,而不是模拟器

javascript - 将 JS 数组拆分为 N 个数组

ios - XCODE/IOS - 通过 UIDocumentInteractionController 共享

ios - swift - 如何适合 GMSMapView(谷歌地图)以显示所有标记并防止过度缩放

objective-c - 在 Swift 中初始化 NSDictionary 时出现问题

javascript数组长度无法在网页中访问

python:在函数内扩展numpy数组

java - Jenkins/Groovy - 对于数组中的每个项目,使用项目中的变量执行 shell 脚本