Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在tableView中删除用户默认数据?_Ios_Swift_Uitableview_Nsuserdefaults - Fatal编程技术网

Ios 如何在tableView中删除用户默认数据?

Ios 如何在tableView中删除用户默认数据?,ios,swift,uitableview,nsuserdefaults,Ios,Swift,Uitableview,Nsuserdefaults,我使用用户默认设置添加了一个家庭作业页面。 空值也会添加到tableView和delete函数,但该函数不起作用 按钮操作 @IBAction func addHomeWork(_ sender: Any) { let newHomeWork = HomeWork(addtitle:addHomeworktxt.text!) HomeWork.saveHomeWork(homeWork: newHomeWork) } 视图将出现 override

我使用用户默认设置添加了一个家庭作业页面。 空值也会添加到tableView和delete函数,但该函数不起作用

按钮操作

 @IBAction func addHomeWork(_ sender: Any) {
        let newHomeWork = HomeWork(addtitle:addHomeworktxt.text!)
        HomeWork.saveHomeWork(homeWork: newHomeWork)
    }
视图将出现

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        if let arrayDetails = HomeWork.getHomeWork() {
            homeWorkArray = arrayDetails
        }
    }
编辑风格

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()
    }
}
示范班作业

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
    }
在作业模型类中保存作业方法

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

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

homeWorkArray.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
self.tableView.reloadData()
HomeWork.getHomeWork()

考虑添加一个函数,像当前的数组一样保存当前的数组

public static func reSave(homeWorks:[HomeWork]){ 
  let homeWorkDat = try! JSONEncoder().encode(homeWorks)
  UserDefaults.standard.set(homeWorkDat, forKey: "homeworkData") 
}
然后将上述代码替换为

homeWorkArray.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic) 
HomeWork.reSave(homeWorks:homeWorkArray)