作家
登录

Swift实践:使用CoreData完成一个通讯录存储

作者: 来源: 2017-09-06 15:34:45 阅读 我要评论

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已经保存数据的五个步调

  1. 获取总代劳和托管对象总管

  2. 勾选完成之后,会看到一个后缀名是"xcdatamodeld"的文件,这个就是咱们的数据库模板啦。

    大年夜Entity获取一个fetchRequest

  3. 根据fetchRequest,大年夜managedContext中萌芽数据

  4. 保存。保存过程中可能会掉足,要做一下处理。

  5. 添加到数组中

2.2 根本存储

  • 获取总代劳和托管对象总管

  • 建立一个Entity

  • 保存内容

  • 保存Entity到托管对象。如不雅保存掉败,进行处理

  • 保存到数组中,更新UI

3. 更新一?通信录的列表页Demo

需求:完成一个通信录的列表页。请求:

  1. 大年夜本地数据库中攫取名字列表

  2. 点击增长可以添加一个名字

  3. 好,接下来咱们来一步一步实现这个需求。为了突稳重点,咱们先大年夜最简单的开端,应用默认带数据库的工程进行着手。

    3.1 Xcode创建默认带数据库的工程

    在 Xcode 创建工程时,供给了创建 CoreData 的模板,只须要我们在创建时,勾选 CoreData 选项,Xcode 就会主动创建出数据模型文件。

    这个Demo用这个创建,纯粹是为了简单直奔主题。不然还要一开端分享很多其他的内容,看官们会认为腻的。

    当然,如今琅绫擎是还不克不及存数据的,还须要我们设置一下字段名称。

    然则,实际开辟中不建议应用这种方法创建。平日情况下我们都邑把生成的模板代码都删除的。

    3.2 创建本地数据库模板

    作者:非典范技巧宅

    • 第一步,要添加一个Entity,这个就相当于是数据库中的一张表。

    • 第二步,对新建的Entity定名。

    • 第三步,设计Entity琅绫擎的属性。咱们这个Demo的需求琅绫擎只须要一小我名,所以就只设置了一个名字叫做name的属性,类型是String。


        推荐阅读

        未来10年,人工智能和机器人将对就业有7点影响

      而最糟糕的职业袈潋是多种多样的,个中包含纺织工人、照片处理人员、家具精加工人员、金属/塑料机械操作员、印刷装订工和印刷工人等很多制造业岗亭。机械人技巧以及技巧的进步,正在让这些工作岗亭变得不那么重要。>>>详细阅读


      本文标题:Swift实践:使用CoreData完成一个通讯录存储

      地址:http://www.17bianji.com/lsqh/37182.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)