Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Swift 使用领域删除TableView中的行_Swift_Realm_Tableview_Crud - Fatal编程技术网

Swift 使用领域删除TableView中的行

Swift 使用领域删除TableView中的行,swift,realm,tableview,crud,Swift,Realm,Tableview,Crud,尝试使用commit editingStyle函数利用TableView中的delete row功能,但Realm似乎使这变得更加困难 函数最初是在不使用领域数据库的情况下创建的,只是一个填充TableView的数组。不过,使用Realm的方式并不完全相同,删除函数也不起作用 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt i

尝试使用commit editingStyle函数利用TableView中的delete row功能,但Realm似乎使这变得更加困难

函数最初是在不使用领域数据库的情况下创建的,只是一个填充TableView的数组。不过,使用Realm的方式并不完全相同,删除函数也不起作用

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

       if editingStyle == .delete {

           if let courseForDeletion = courses?[indexPath.row] {
               do {
                   try realm.write {
                       realm.delete(courseForDeletion)
                   }
               } catch {
                   print("Error deleting course: \(error)")
               }

               tableView.deleteRows(at: [indexPath], with: .automatic)
           }
       }
   }

期望给定行上的滑动手势生成红色删除功能,这通常在不使用领域时发生。

什么使您认为删除功能不起作用


要查看行被删除,需要调用tableview.reloadData

不相关,但永远不要在insertRows/deleteRows之后调用reloadData。insert/delete方法更新了UI动画。@瓦迪安感谢您的洞察力-不管怎样,您对为什么这个方法在引入领域后不立即复制相同的功能有什么想法吗?不,这个方法应该可以工作。canEditRowAt是否实现为返回false?但是,deleteRows行必须位于if let范围内。为什么课程是选修的?表视图也是可选的吗?@vadian canEditRowAt当前实现为返回true,我将deleteRows向上推到if-let作用域中,但它仍然没有响应滑动手势。courses对象是可选的,因为最初表中不包含任何内容,用户可以通过addCourses栏按钮项生成这些内容,该按钮项再次提示UIAlerts,代码应使用canEditRowAt返回true,这是默认设置。。。该表不包含任何内容,也可以由非可选的空数组表示,并且您可以去掉所有可选绑定。您需要调用tableview.reloadData。不,你没有。deleteRows不会更新表视图