CoreData和FMDB你用哪个?
概括:
我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的。苹果推荐开发者去使用CoreData,但 FMDB 在 git 上的那上万颗星星也说明了开发者对它的喜爱。在开发中你要是只是使用一张表去存储一点简单的东西,使用FMDB也方便,可是一旦表与表之间产生属性关联的话,用FMDB就比较的麻烦了。但用 CoreData 就比较的容易。
再说说今天我们想说的,也是我看其他人的博客学到的,给大家分享出来。关联数据库和视图,简单的想一下这么一个场景。在一个tableView里面,tableView的数据源是表里面数据的条数,你通过表里面数据的条数去控制tableView的显示!在CoreData中 有一个控制器 NSFetchedResultsController专门为了关联数据库和视图而生的,这个Demo是写好了的,需要的留言告诉我我发给你。
CoreData的使用:
下面是我学习的链接,也给大家:
iOS中CoreData数据管理系列一:初识CoreData
iOS中CoreData数据管理系列二:CoreData框架中三个重要的类
iOS中CoreData数据管理系列四:进行数据与页面的绑定
注意点和总结的地方:
先把里面会用到的类描述一下,知道它们是用来做什么,对应的都是那些东西。
/** * 先把CoreData里面会用到的类总结一下: NSManagedObjectModel 数据模型管理类对应我们的.xcdatamodeld 文件 NSPersistentStoreCoordinator 相当于数据库与数据模型之间桥接器,通过它将数据模型存入到数据库 NSManagedObjectContext 核心的数据库管理类 开发者通过操作它来执行对数据库的操作 NSEntityDescription 实体描述,直接点其实就是库里面的表 NSFetchRequest 查询请求, 查 删 改 你都的简历请求,找到你要修改的那一条数据 NSPredicate 请求的条件,方法 [NSPredicate predicateWithFormat:@"stuNum == 20"] 意思是建立一条 stuNum = 20 的查询条件 */
其次就是学习使用CoreData的时候可能会有疑惑的地方:
NSURL * modelurl = [[NSBundle mainBundle]URLForResource:@"CoreDataTest" withExtension:@"momd"]; // 获取创建的caredata 文件 NSManagedObjectModel * mom = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelurl];
上面是创建 NSManagedObjectModel 类的代码,注意第一句的 @“CoreDataTest” 是你 CoreData文件的名字,后面的 @“momd”, 是你的.xcdatamodel文件,用数据模型编辑器编辑编译后为.momd或.mom文件,所以就写@“momd”,可能会有人疑惑那是什么吧,顺便也说一下。
实现上面提到的:
就不大段大段的粘贴代码上去了,封装到了不同的控制器写的,粘贴复制就不太好了,你要觉得有需要可以留留言给我,我发给你!
FMDB:
我自己用着FMDB感觉一切还好,除了每次一懵逼,找找SQLite语句。
它的使用,网上真的是一大把,我就不再重复啰嗦了。把FMDB官方的解释中文版链接给大家,有时间还是看看吧,毕竟不是每个人都知道官方解释说了什么。说不定就有遗落了的知识。
有一点你知道吗?后面是一条创建 bulktest1 表的SQLite语句:@"create table bulktest1 (id integer primary key autoincrement, x text);"
后面的属性肯定不是我们描述的重点,前面的 id integer primary key autoincrement 知道是做什么的吗?如果你也不太清楚地,知识点链接在下面,看看至少知道这条语句说的是什么意思。
Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
上面说了这些,还是那句两个都不错,所以两个都学学,挺好!需要上面Demo就留言Q我,我发给你!