修改删除方法
最后我们再回到CardView视图,修改下删除的方法,依旧需要先引入数据库,如下代码所示:
@FetchRequest(entity: Model.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Model.id, ascending: false)]) var models: FetchedResults<Model>
然后在调用删除方法的地方键入下面的代码,如下代码所示:
if let deleteItem = models.first(where: { $0.id == model.id }) { context.delete(deleteItem) do { try context.save() } catch { let nsError = error as NSError fatalError("Unresolved error (nsError), (nsError.userInfo)") } }
上述代码中,我们和在EditView编辑页面做的事情一样,通过判断当前操作的ID是models数据集中的那一项,然后调用delete方法删除数据,最后调用save方法保存当前操作。
项目小结
本章介绍了两种数据持久化的方法,笔者比较推荐第二种使用CoreData框架进行数据持久化的方法,因为后期可以和iCloud进行通信实现云端存储的功能,后面的章节会找机会讲讲这个。
以及在本章中我们将一些新增、编辑、删除的方法都放在了视图中,没有好好利用MVVM结构模式,也是为了让大家先熟悉CoreData框架的使用。我们也可以在后面自己想想如何将一些方法抽离出来,搭建ViewModel视图模型部分,这就当作作业吧~