[英]UserDefault Won't save data in tableView Swift 4
我一直在嘗試重新加載應用程序時保存數據。 但是有些數據將無法保存。
my global variable
let defaults = UserDefaults.standard
這是我在AddTaskView上的代碼
@IBAction func addTask(_ sender: Any) {
let date = datePicker.date
let dateStr = dateFormatter.string(from: date)
taskArray.append(selectedTask)
dateArray.append(dateStr)
defaults.set(selectedTask, forKey: "task")
defaults.set(dateStr, forKey: "date")
dismiss(animated: true, completion: nil)
}
在我的ViewController中,我有viewWillApper
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
defaults.string(forKey: "task")
defaults.string(forKey: "date")
tableView.reloadData()
}
如果我打印從AddTaskView返回的數據,它將在控制台上打印,但在重新加載應用程序時數據消失
tableView.dataSource = self (saved in my viewDidLoad)
這是我的tableView
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath)
cell.textLabel?.text = "\(indexPath.row + 1). \(taskArray[indexPath.row])"
cell.detailTextLabel?.text = dateArray[indexPath.row]
return cell
}
我究竟做錯了什么?
謝謝
您需要執行多項檢查:
defaults.string(forKey: "task")
有一個您不使用的返回值
追加輸入的數據時,請檢查是否已追加。
如果輸入的值在那里,請檢查表的行數。
我相信解決您的問題的關鍵在於以下幾點之一。
花了我一段時間,但我終於想通了
@IBAction func addTask(_ sender: Any) {
let date = datePicker.date
let dateStr = dateFormatter.string(from: date)
taskArray.append(selectedTask)
dateArray.append(dateStr)
defaults.set(taskArray, forKey: "task")
defaults.set(dateArray, forKey: "date")
defaults.synchronize()
dismiss(animated: true, completion: nil)
}
func loadUserDefaults() {
if let tempStr = defaults.stringArray(forKey: "task") {
taskArray = tempStr as [String]
}
if let tempDateStr = defaults.stringArray(forKey: "date") {
dateArray = tempDateStr as [String]
}
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
loadUserDefaults()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.