iOS数据持久化方式分析

iOS数据持久化的方式一般为:plist文件写入、对象归档、SQLite数据库、CoreData。

plist文件写入、对象归档一般用于小的数据量。

SQLite数据库、CoreData则用于大的数据量。

SQLite是一款轻型的数据库,是一种关系型数据库管理系统,他的设计目的是嵌入式设备中使用。

SQLite占用资源非常低,非常适合移动设备中使用,而且是开源免费的

SQLite的数据库操作其实和常规的数据库操作流程是一样的:

1.打开数据库 sqlite3_open()

2.准备SQL语句,采用参数绑定的方式防止SQL注入sqlite3_bind_text()绑定参数

3.编译SQL语句sqlite3_prepare_v2()

4,执行SQL语句sqlite3_exec()

5.语句完结sqlite3_finalize()

6.关闭数据库sqlite3_close()

CoreData

CoreData不是数据库,而是使用数据库、XML、二进制文件等方式来存储数据的一个框架。

CoreData使用面向对象的方式操作数据,用来解决与对象生命周期管理、对象关系图管理合持久化等方面相关的问题。

CoreData避免了SQL的复杂性,能让我们以更加自然的方式与数据库进行交互。将数据库转换为OC对象(托管对象)来实现,这样无需要任何SQL知识就能操作他们。

优点:性能好,可以在Xcode上进行表的设计,或使用Instruments进行性能检测,省去了我们编码的精力,还有这比我们自己编码更好的代码质量。

特性:支持多类型外部存储、撤销/重做、KVC、复杂查询和对象映射、自动验证、并发/合并策略、数据迁移、内存策略,除此之外,还与UI展现良好结合.

结构:

NSManagedObject:模型对象,或者叫实体(entity),可以直接理解为一个OC对象

NSManagedObjectModel:模型文件(以.xcdatamodeld结尾的文件)。记录所有的模型对象(NSEntityDescription)以及对象里面的属性

NSPersistentStoreCoordinator:持久化存储协调员。和数据库打交道,用来执行具体的CRUD操作。

NSManagedObjectContext对象管理上下文。用户所有的持久化操作都是通过此对象。再由此对象去调用NSPersistentStoreCoordinator对象执行具体的操作。

对应关系:

表格结构 —> NSEntityDescription

数据库中所有表格和他们的联系 —> NSManagedObjectModel

数据库存放方式 —>NSPersistentStoreCoordinator

数据库操作 —>NSManagedObjectContext

查询语句 —>NSFetchRequest

表格的记录 —>NSManagedObject

步骤:

1.读取模板文件:NSManagedObjectModel 描述应用程序数据模型,可以包含多个数据模型对象

2.初始化NSPersistentStoreCoordinator 执行具体的持久化操作。这里将告知程序采用什么方式来存储数据。

3.初始化NSManagedObjectContext执行CURD操作。封装了数据库的各种办法

数据库事物机制

事物机制:单个逻辑工作单元执行的一系列操作称之为数据库事务,作用是同步发生数据更新时,防止数据不一致的情况。简单一点就是如果所有数据提交成功再把数据提交,否则就自动回滚数据,这种做法多用于银行。

事务的属性:原子性、一致性、隔离性、持久性

CoreData版本迁移:数据模型发生改变,我们可以通过数据模型版本变迁来达到目的。

时间: 2024-10-01 03:53:45

iOS数据持久化方式分析的相关文章

iOS -数据持久化方式-以真实项目讲解

前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎么会使用到这些方式,都会以本人实际开发的场景为例,大约需要花10-15分钟,欢迎大家指正. 一.前言 和大家说一个真实故事,前年我去美图面试(当时的技术仅仅是UI和接口的实现,并不注重很多底层实现和很多概念的原理,换句话说,就是真正的码农),过了技术第一轮和第二轮(前两年的也就是问问技术点的实现),

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身

IOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

iOS数据持久化(一)

一.什么是数据持久化 数据持久化及数据的永久存储,将数据保存在硬盘中,程序关闭,内存释放后,重新打开程序,可以继续访问之前保存的数据. 二.数据持久化方式 常见的数据持久化方式有以下几项: 沙盒 preference 归档 / 反归档 SQLite CoreData 这篇只讲沙盒,preference,归档/反归档. 1.沙盒 沙盒是系统为每一个应用程序生成的一个特定文件夹   文件夹的名字由十六进制数据组成,每一个应用程序的沙盒文件名都是不一样的,是由系统随机生成的. //获取沙盒主目录 NS

IOS数据持久化的4种方式

9.1 数据持久化概述 9.2 iOS应用程序目录结构 9.3 读写属性列表 9.4 对象归档 9.5 访问SQLite 9.1 数据持久化概述 iOS中可以有四种持久化数据的方式: 属性列表.对象归档.SQLite3和Core Data 9.2 iOS应用程序目录结构 iOS应用程序运行在Mac os模拟器时候,有一下临时目录模拟器3.1.3为例子: /Users/tony/Library/Application Support/iPhone Simulator/3.1.3/Applicati

iOS 数据持久化4种方式

iOS 4种讲数据持久存储到iOS文件的系统机制: 属性列表(NSUserDefaults.plist文件) 对象归档(NSCoding) iOS嵌入式关系数据库(SQLite3) 苹果提供的持久化工具(Core Data) 说道数据持久化都涉及到一个共同的要素.既然是把数据持久存储到iOS文件系统中,那么久涉及到了应用沙盒. 可以尝试使用Xcode建立一个空的应用,然后打开应用目录可以查看到有以下文件 1.Documents ①存放内容 我们可以将应用程序的数据文件保存在该目录下.不过这些数据