CoreData作为Apple的亲儿子,依然在App须要存储构造化数据上发挥侧重要的感化。CoreData已经跨越十年了,并且亲爹还在积极的保护着它。

在Monster、Indeed这些海外主流雇用网站看一下iOS的职位,根本上都邑大年夜大年夜写着请求会闇练应用CoreData。
然而这么一个成熟,被实践考验过的代码库反而在国内应用处不是特别多。FMDB、Realm等等在被广泛应用。经常在面试的时刻问iOSer是不是懂得数据库,答复都是懂得。再一细问,很多人也都是只应用到了FMDB,对于CoreData倒是懂得甚少。
后来想了想,可能是因为CoreData的入门成本有点高,并且相干的中文材料比较少的缘故吧。
为了写这个系列,还专门糊弄了objc.io的CoreData这本书。读完之后受益匪浅。
这个系列要写若干篇还没有想好,大年夜概也照样会大年夜根本到高等的一个过渡。
第一篇经由过程一个通信录实现数据库的攫取。第二篇会存储更多类型的数据。
最终实现结不雅:
CoreDataDemo.gif
1. Core Data架构
一个根本的 Core Data 栈由四个重要部分构成:托管对象 (NSManagedObject),托管对象高低文 (NSManagedObjectContext),持久化存储调和器 (NSPersistentStoreCoordinator),以及持久化存储 (NSPersistentStore)。

-
NSManagedObject是我们的数据模型,也就是我们存储的对象。这些对象都保存在NSManagedObjectContext中,每个存储对象都知道本身对应哪个高低文。
-
NSManagedObjectContext 谷旦常打交道的都是这个。其他三个在数据迁徙的时刻才会看到。
-
NSPersistenStoreCoordinator :
是模型和存储数据库之间的桥梁,负责两者之间最复杂的细节隐蔽。
关于Context想多说点,因为是天天都打交道的嘛。它其实是内存中的一块区域,对象所有的操作都须要一个context。直到save之前,都是在内存中,不会对数据库中的内容有任何影响。每一个托管对象都对应一个Context,一个对象只会跟一个特定的Context打交道。直到生命周期停止。

2. CoreData的根本攫取操作
2. 1 获取CoreData已经保存数据的五个步调
-
获取总代劳和托管对象总管
-
勾选完成之后,会看到一个后缀名是"xcdatamodeld"的文件,这个就是咱们的数据库模板啦。
大年夜Entity获取一个fetchRequest
-
根据fetchRequest,大年夜managedContext中萌芽数据
-
保存。保存过程中可能会掉足,要做一下处理。
-
添加到数组中
2.2 根本存储
-
获取总代劳和托管对象总管
-
建立一个Entity
-
保存内容
-
保存Entity到托管对象。如不雅保存掉败,进行处理
-
保存到数组中,更新UI
3. 更新一?通信录的列表页Demo

需求:完成一个通信录的列表页。请求:
-
大年夜本地数据库中攫取名字列表
-

点击增长可以添加一个名字
-
好,接下来咱们来一步一步实现这个需求。为了突稳重点,咱们先大年夜最简单的开端,应用默认带数据库的工程进行着手。
3.1 Xcode创建默认带数据库的工程

在 Xcode 创建工程时,供给了创建 CoreData 的模板,只须要我们在创建时,勾选 CoreData 选项,Xcode 就会主动创建出数据模型文件。
这个Demo用这个创建,纯粹是为了简单直奔主题。不然还要一开端分享很多其他的内容,看官们会认为腻的。
当然,如今琅绫擎是还不克不及存数据的,还须要我们设置一下字段名称。
然则,实际开辟中不建议应用这种方法创建。平日情况下我们都邑把生成的模板代码都删除的。
3.2 创建本地数据库模板

作者:非典范技巧宅
-

-
第一步,要添加一个Entity,这个就相当于是数据库中的一张表。
-
第二步,对新建的Entity定名。
-
第三步,设计Entity琅绫擎的属性。咱们这个Demo的需求琅绫擎只须要一小我名,所以就只设置了一个名字叫做name的属性,类型是String。
推荐阅读
而最糟糕的职业袈潋是多种多样的,个中包含纺织工人、照片处理人员、家具精加工人员、金属/塑料机械操作员、印刷装订工和印刷工人等很多制造业岗亭。机械人技巧以及技巧的进步,正在让这些工作岗亭变得不那么重要。>>>详细阅读
本文标题:Swift实践:使用CoreData完成一个通讯录存储
地址:http://www.17bianji.com/lsqh/37182.html
1/2 1
-

网友点评
精彩导读
科技快报
品牌展示