CoreData和FMDB你用哪个?】的更多相关文章

概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的.苹果推荐开发者去使用CoreData,但 FMDB 在 git 上的那上万颗星星也说明了开发者对它的喜爱.在开发中你要是只是使用一张表去存储一点简单的东西,使用FMDB也方便,可是一旦表与表之间产生属性关联的话,用FMDB就比较的麻烦了.但用 CoreData 就比较的容易. 再说说今天我们想说的,也是我看其他人的博客学到的,给大家分享出来.关…
core data   core data 基于model-view-controller(mvc)模式下,为创建分解的cocoa应用程序提供了一个灵活和强大的数据模型框架.   core data可以使你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它.core data提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在app中继续创建新的任务.在使用core data的时候,你不用安装额外的数据库系统,因为core data使用内置的sqlite数据…
WCDB背景 自己初次见到WCDB是微信开发团队公众号在今年五月份推送的一篇文章中(开发者团队的微信号上面图片中有,值得大家关注一下),那时候就说在筹备着WCDB的开源,觉得很是新奇,在两个多月前WCDB开源了!自己是最近才有时间看的WCDB,总结一下自己的理解和学习的东西,WCDB是微信团队开源的支持Android,也支持iOS,那当然也是会支持macOS的一个移动端数据库框架,FMDB估计做iOS的99.99%的都知道,就像Android开发中使用LitePal一样,都是在SQLite的基础…
在自己开发中,每次用到数据库都会纠结是使用CoreData还是FMDB.CoreData虽然Api简单,但是调用栈非常复杂,要初始化一个Context需要至少20行代码.显然,对于这种这么恶心的情况,我们的大Github必须有人会跳出来解决这种问题.于是就出现了MagicRecord这个对CoreData的封装库.一开始遇到这个库的时候,好用到几乎让我想把所有项目的数据库都换成CoreData了.两句话解决CoreData调用栈的初始化,一句话完成数据库版本升级和自动数据合并更新(虽然我们很少用…
Sqlite 1. Sqlite数据库 > 数据库? 按数据结构来组织,存储和管理数据的仓库. > 关系型数据库:使用二维表及其之间的联系组织成一个数据组织. 关系:可以理解为一张二维表,每个关系都有个关系名,通常说的表名. 元组:可以理解为二维表中的一行,在数据库中成为记录 属性: 二维表中的一列,成为字段 关键字: 一组可以唯一标识元组(记录)的属性,数据库中成为主键,由一个或多个列组成. 关系模式: 对关系(表)的描述,格式:表名(字段1,字段2,…),即表结构 > Sqlite…
http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关键字,以便理解后面的一些内容,这些约定很多都是出现在苹果的官方文档中的. NSPersistentStoreCoordinator(Persistent Store Coordinator),缩写为PSC. NSManagedObjectContext(Managed Object Context)…
http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之前项目的迭代和其他项目,目前为止只写完第一阶段. 之前项目本地持久化方案主要用的是SQLite,这次重写项目打算换一种持久化方案,于是我们经过讨论选择了苹果的“亲儿子”CoreData. 在使用CoreData的过程中,我也是一边学习一边实践.在学习的过程中,一些写的质量比较高的博客对我的帮助也很大…
从iOS 8起,就有了App Extension.Extension的种类至今也扩充到了19种,应用也很广泛,值得重点关注起来. Extension几乎可以看做一个内嵌的独立App,拥有独立的BundleID.证书.概要配置文件.进程空间.沙盒等等.只是需要打包在App内,类似于寄生在宿主App内,捆绑安装.不过一旦安装应用后,扩展可以由系统独立调用,执行扩展内的代码逻辑. 这篇只记录之前开发Today Extension的过程中,值得注意的事项.其实大多都是通用的. 1.创建Extension…
首先,学习这类开源项目的主要目的是为了实现产品汪需求,如果不是这个目的,完全可以看Explore GitHub,当前最火的开源项目都在这里,当然你需要过滤一下语言. 好了,介绍几个希望能帮助到你. 普通的iOS开发项目基本就是网络.本地存储+一些狂拽炫酷的动画,想想看是不是? -------------------- 割 --------------------- 网络 AFNetworking JSONKit Reachability SVPullToRefresh (替代 EGOTableV…
数据持久化,也就是把数据保存到磁盘,以后可以再读取出来使用(也可以再次更改或删除).很多场景需要数据持久化,比如为了减轻服务器的访问与存储压力,客户端需要在本地做一些数据持久化的工作. iOS的数据持久化,有几种方式,包括:自定义格式的文件.plist.CoreData.FMDB等等. 这里记录基于CoreData的开源项目MagicalRecord的使用.经过封装,magicalrecord已经不需要接触到sql语句的编写. (1)安装 小程还是使用cocoapods来安装,只需要在Podfi…
数据持久化方案(如果总结不到位,或者有误的地方,敬请斧正) 一.功能: 主要是将数据持久化到本地,减少对网络请求的次数,既节省了用户的流量,也增强了App的体验效果. 二.种类:  plist存储:使用XML键值对持久化,它适用于少量且数据基本不怎么改变的情况. 偏好存储:使用NSUserDefalut持久化,专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据. 归档序列化存储:使用二进制序列化持久化,只要遵循了NSCoding协议的对象都可以通过它实现序列化. 沙盒存储:持久化…
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般在iOS的数据库操作中我们都使用封装库FMDB. FMDB: FMDB是第三方的数据库框架,它用OC封装了用C写的原生sqlite数据库. 使用步骤: 1.先在项目中添加lib文件:libsqlite3.0.dylib 2.导入fmdb第三方类库 3.在代码中用第三方类库新建数据库: FMDatab…
关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两者都需要设置线程安全,在这里以FMDB来解释对SQLite的线程安全访问. 一:FMDB的线程安全:(以读取图片为例) 1.没有线程安全的执行方式: //************** 数据库保存图片 ******************/…
前言: 最近几天一直在折腾数据库存储,之前文章(http://www.cnblogs.com/whoislcj/p/5485959.html)介绍了Sqlite 数据库,SQLite是一种小型的轻量级的关系型数据库,不过直接用ios sdk提供的API来进行数据库开发,多多少少感觉不那么得心应手.后来也学了更加面向对象的CoreData数据库,不过coreData感觉对数据库的支持不太那么好,虽然操作方便,但是损失了性能以及效率,对于数据量比较大的app来说就有点不太合适了,如果有兴趣的可以看下…
一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便. FMDB优点: 使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 对比苹果自带的CoreData框架,更加轻量级和灵活 提供多线程安全,有效地防止数据混乱,原来的SQLite不是线程安全的 FMDB缺点: 因为是OC语言封装的,失去了SQLite原来的跨平台性 我们要使用FMDB需要的步骤: 项目中添加…
CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数据操作期间,我们不需要编写任何SQL语句 CoreData 不能执行SQL语句 取而代之,操作的是对象.而常用的三方库 FMDB SQLite 可以直接SQL语句 CoreData和数据库有什么区别? CoreData是一个苹果原生的框架,它拥有像数…
CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得你的操作更加简单(如FMDB BNRPersistence). Cocoa框架本身提供了CoreData这个API可方便的让开发者通过操作对象的方式在操作数据库.CoreData是一个对象图(object graph)以及持久化的管理框架.我们可以通过CoreData创对象,设置好象之间的关系,然后…
#import "ViewController.h" #import "Person.h" @interface ViewController () <UITableViewDelegate,UITableViewDataSource> { UITableView *_tableView; NSMutableArray *_dataArray; UITextField *_nameTextField; UITextField *_ageTextField…
CoreData /*英译  Entity:实体 Attributes:属性 binary:二进制 persistent:持续化 coordinator:协调者 meging:合并 configuration:配置 representation:展示 picker:选择 source:来源 representation:展示 fetch:抓取* cashe:缓存 sort:排序 protocal:协议*/ PS:mARC->ARC retain->strong,建数据库要写单例,打开数据库要懒…
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了“事务”这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕业后从事的不是服务器方面的工作,对数据库方面的知识一直停留在理论阶段,在iOS中有两种比较常用的数据库,一种是sqlite,另外一种是coreData,这二者的优缺点在这里不再赘述,如有感兴趣的同学可以查阅相关资料 令人兴奋的是,当谈到“事务”时,我想到了sqlite本身是支持事务操作的,FMDB作为sqlite的上层…
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了"事务"这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕业后从事的不是服务器方面的工作,对数据库方面的知识一直停留在理论阶段,在iOS中有两种比较常用的数据库,一种是sqlite,另外一种是coreData,这二者的优缺点在这里不再赘述,如有感兴趣的同学可以查阅相关资料 令人兴奋的是,当谈到"事务"时,我想到了sqlite本身是支持事务操作的,…
  1. 将 MagicalRecord 文件夹拖入到工程文件中,引入 CoreData.frame 框架 2. 在 .pch 文件中引入头文件 CoreData+MagicalRecord.h 注:只能在.pch文件中引头文件,否则无法通过编译 3. 创建 Model.xcdatamodeld 文件,并创建一个 Student 的 ENTITIES,最后创建出 Student 类 4. 在 Appdelete.m 文件中写以下代码 以下是增删改查的基本操作,但注意一点,在做任何的数据库操作之前…
数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两者都需要设置线程安全,在这里以FMDB来解释对SQLite的线程安全访问. 一:FMDB的线程安全:(以读取图片为例) 1.没有线程安全的执行方式: //************** 数据库保存图片 ******************// FMDatabase *database = [FMDat…
@简单的说,Core Data就是能够存储到磁盘的对象图,[...]Core Data能够帮我们做非常多任务作.它能够作为软件的整个模型层. 它不只在磁盘上存储数据.也把我们须要的数据对象读取到内存中. --Marcus Zarra, Core Data @Core Data是Mac OS X中Cocoa API的一部分,首次在Mac OS X 10.4 Tiger与iOS 3.0系统中出现[2].它同意依照实体-属性-值模型组织数据.并以XML,二进制文件或SQLite数据文件的格式将其串行化…
简介: FMDB是基于SQlite3的封装一个第三方的OC库,操作起来更加简单,性能比Coredata更加高. 1.创建sqlite文件 2.导入FMDB头文件 3.创建数据库表table 4.编写sql语句 5.执行操作语句 1.使用示例: class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFi…
SQLite: SQLite是一款轻量级型的数据库,资源占用少.性能良好和零管理成本,具有零配置(无需安装和管理配置).独立(没有额外依赖).储存在单一磁盘文件中的一个完整的数据库.源码完全的开源.比一些流行的数据库在大部分普通数据库操作要快……功能特性:在大型系统和处理大批量数据时不适用      SQLite引擎不是程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分,所以主要的通信协议是在编程语言内的直接API调用:在APP开发中将SQLite集成到应用的沙盒目录下(SQLite是…
数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两者都需要设置线程安全,在这里以FMDB来解释对SQLite的线程安全访问. 一:FMDB的线程安全:(以读取图片为例) 1.没有线程安全的执行方式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28…
CoreData是iOS5后,苹果提供的原生的用于对象化管理数据并且持久化的框架.CoreData本质上是将底层数据库封装成对象进行管理.但数据库实际上只是CoreData的一个功能,并不是全部功能.在iOS开发中,除了可以使用CoreData进行数据管理,还可以使用SQLite进行内存管理.并且有封装好SQLite代码的OC框架FMDB给我们使用.具体看我上篇文章.SQLite重要框架FMDB的使用.但对比SQLite,CoreData有下面几个优势.第一是CoreData作为苹果提供的原生框…
前几篇已经写完了SQLite与FMDB的基本内容以及衍生出来的知识点,我们这一篇主要讲述FMDB与SQLite在基本使用中的区别,大约需要5-10分钟时间讲述内容,欢迎大家指正. 基本使用区别 1.数据库的操作对象 (1)SQLite通过sqlite3 sqlite3 *_db; (2)FMDB方式 FMDatabase *db; 2.打开数据库方式 (1)SQLite方式 - (void)openDB{ //获取数据库文件路径 NSString *doc = [NSSearchPathForD…
1.初识CoreData CoreData的结构构成: NSManagedObjectModel的构成: 可以通过Entity创建继承自NSManagedObject类的文件,这个文件就是开发中使用的托管对象,具备模型对象的表示功能,CoreData的本地持久化都是通过这个类及其子类完成的. 在CoreData的整体结构中,主要分为两部分.一个是NSManagedObjectContext管理的模型部分,管理着所有CoreData的托管对象.一个是SQLite实现的本地持久化部分,负责和SQL数…