gpt4 book ai didi

ios - 为什么 UserDefaults.standard.set 不保存我的数组?从后台删除应用程序后,数据将被清除

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:28 25 4
gpt4 key购买 nike

我目前正在使用 Swift 编写的应用程序中处理日历。尽管它可以正常工作,因为可以输入数据(事件日志)并将其添加到将显示在表格 View 中的数组中,但是一旦应用程序关闭并从后台删除,当我重新打开它时,事件日志都走了。

我的代码有没有错误?

import UIKit
import JTAppleCalendar
var event = [String]()
var userData = false

class CalendarViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var calendarView: JTAppleCalendarView!
@IBOutlet weak var monthAndYear: UILabel!
@IBOutlet weak var eventTable: UITableView!

override func viewDidAppear(_ animated: Bool) {
eventTable.reloadData()
}

override func viewDidLoad() {
super.viewDidLoad()
configureCalendarView()

userData = UserDefaults.standard.bool(forKey: "userData")

if userData == true {
UserDefaults.standard.object(forKey: "event") //gets
}

else
{
event.append("NO USER DATA")
UserDefaults.standard.set(event, forKey: "event")

if event[0] == "NO USER DATA" {
event.remove(at: 0)
UserDefaults.standard.set(event, forKey: "event")
}
}
eventTable.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return event.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: nil)
cell.textLabel?.text = event[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete
{
event.remove(at: indexPath.row)
UserDefaults.standard.set(event, forKey: "event")
}
eventTable.reloadData()
}

Incase 有必要,这里是允许在数组中输入数据的代码:

class AddEventViewController: UIViewController {

@IBOutlet weak var eventText: UITextField!
@IBAction func addEvent(_ sender: Any) {

userData = true
UserDefaults.standard.set(userData, forKey: "userData")

if eventText.text == ""
{
}
else
{
event.append(eventText.text!)
UserDefaults.standard.set(event, forKey: "event")
}
}

我已经尝试使用模拟器和真正的 iOS 设备以及重新安装 Xcode,因为我读到这可能是 Xcode 本身的问题。我也尝试在所有地方添加 UserDefaults.standard.synchronize(),但是,似乎没有任何效果。

最佳答案

代码中唯一从 UserDefaults 中获取值的行是...

UserDefaults.standard.object(forKey: "event")

这实际上并没有对该值做任何事情。它得到它...然后把它扔掉。

这会让它看起来像是没有被保存。

将其更改为...

event = UserDefaults.standard.object(forKey: "event")

关于ios - 为什么 UserDefaults.standard.set 不保存我的数组?从后台删除应用程序后,数据将被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com