首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除tableView中的用户默认数据?

如何删除tableView中的用户默认数据?
EN

Stack Overflow用户
提问于 2019-06-04 07:48:11
回答 1查看 136关注 0票数 0

我使用默认用户添加了一个作业页面。空值还会添加到tableView和delete函数中,但不起作用。

ButtonAction

代码语言:javascript
复制
 @IBAction func addHomeWork(_ sender: Any) {
        let newHomeWork = HomeWork(addtitle:addHomeworktxt.text!)
        HomeWork.saveHomeWork(homeWork: newHomeWork)
    }

viewWillAppear

代码语言:javascript
复制
   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        if let arrayDetails = HomeWork.getHomeWork() {
            homeWorkArray = arrayDetails
        }
    }

EditingStyle

代码语言:javascript
复制
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == UITableViewCell.EditingStyle.delete {
        homeWorkArray.remove(at: indexPath.row)
        self.tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
        self.tableView.reloadData()
        HomeWork.getHomeWork()
    }
}

模型类HomeWork

代码语言:javascript
复制
class HomeWork: Codable {
    var title:String
    init(addtitle:String) {
        self.title = addtitle}

    public static func getHomeWork() -> [HomeWork]? {
        var homeWorkArray:[HomeWork] = []
        if let homeWorkData = UserDefaults.standard.data(forKey: "homeworkData"){
            homeWorkArray = try! JSONDecoder().decode([HomeWork].self, from: homeWorkData)
        }
        return homeWorkArray
    }

saveHomeWork方法在HomeWork模型类中的应用

代码语言:javascript
复制
    public static func saveHomeWork(homeWork:HomeWork){
        var retrivedHomeWorkArray:[HomeWork] = []

        if  let homeWorkData = UserDefaults.standard.data(forKey: "homeworkData"){
            retrivedHomeWorkArray = try! JSONDecoder().decode([HomeWork].self, from: homeWorkData)
        }


        if retrivedHomeWorkArray.count == 0 {
            var homeWorkArray = [HomeWork]()
            homeWorkArray.append(homeWork)
            let homeWorkDat = try! JSONEncoder().encode(homeWorkArray)
            UserDefaults.standard.set(homeWorkDat, forKey: "homeworkData")
        }else{

            retrivedHomeWorkArray.append(homeWork)
            let homeWorkDat = try! JSONEncoder().encode(retrivedHomeWorkArray)
            UserDefaults.standard.set(homeWorkDat, forKey: "homeworkData")  } }}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 07:59:48

删除时,不更改保存的数组

代码语言:javascript
复制
homeWorkArray.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
self.tableView.reloadData()
HomeWork.getHomeWork()

因此,请考虑添加一个重新保存当前数组的函数,如

代码语言:javascript
复制
public static func reSave(homeWorks:[HomeWork]){ 
  let homeWorkDat = try! JSONEncoder().encode(homeWorks)
  UserDefaults.standard.set(homeWorkDat, forKey: "homeworkData") 
}

然后将上面的代码替换为

代码语言:javascript
复制
homeWorkArray.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic) 
HomeWork.reSave(homeWorks:homeWorkArray)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56439514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档