首页 > 代码库 > swift coredata

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中直接删除表,后续尝试。。。   但是如果一条一条删除,实现全部删除,那效率估计会低很多尤其是大数据量

 

swift coredata