swift coredata
接触swift有段时间,搞定通讯、数据库基本上已经够普通开发使用。
coredata一直是官方推荐使用的数据存储方式,以下即为普通数据存储方式及代码
1.首先要勾选工程中使用coredata数据存储方式,系统会自动生成所需相关代码
2.创建实体(Entity)、属性(Attributes)并选择属性的数据类型
对比来说,实体=表(首字母必须大些),属性=字段,并且指定字段类型 (首字符必须小写),如命名不规范,xcode会自动警告提示
属性数据类型多种(Int、Double、String、Date、Bool等)如果存储图片附件等,建议先把图片存储到document指定路径下,然后把路径保存即可
3.生成实体文件(为什么要生成实体文件?个人认为:程序开发过程中需要重复调用实体类,鉴于Object-c中都是需要引入头文件,目的在于帮助当前类找到所需文件源头,所有文件源头就在工程内部并且有类文件支撑,故可以直接引用。然而,CoreDataDemo.xcdatamodeld 这个模块创建实体类后,当其他文件需要带有实体类时无法找到源文件,恐引起出错,故仍然需要创建文件)。注意,xcode当前显示的必须是coredata模型文件(即选中该模型文件)此时点选工具栏Editor ,选择Creat NSManagedObject Subclass ,进而生成oc文件------为什么最后生成了oc类型的h、m文件,暂时搞不懂。另外还会生成一个文件CoreDataDemo-Bridging-Header.h,此文件即为 桥梁 ,意思是联通oc文件和swift,可以被swift引用)
4.创建数据管理公共文件,统一存储、查询、删除等功能。至此所需文件都以完成
开始代码
调用代码
1.读取所有数据
controlListArray = DataBaseClass.DBGoodsInfoReadAllData()
2.插入数据
DataBaseClass.DBGoodsInfoInsert(["title":wordTextField!.text,"price":dateTextField!.text])
3.更新数据
DataBaseClass.DBGoodsInfoUpdate(["title":wordTextField!.text,"price":dateTextField!.text],obj:dataDetail!)
4.删除指定数据
DataBaseClass.DBGoodsInfoDeleteObject(controlListArray!, deleteIndex: indexPath.row)
5.批量删除数据
思路:收集批量删除数据的索引,然后数组重新排序(倒序方式),最后遍历索引一次删除
6.全部删除,尚未找到合适方法。在sqlite中直接删除表,后续尝试。。。 但是如果一条一条删除,实现全部删除,那效率估计会低很多尤其是大数据量