zoukankan      html  css  js  c++  java
  • 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数据管理系列三:添加与查询数据 

              iOS中CoreData数据管理系列四:进行数据与页面的绑定

              iOS 数据持久化 -- Core Data

    注意点和总结的地方:

    先把里面会用到的类描述一下,知道它们是用来做什么,对应的都是那些东西。

    /**
     *   先把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官方的解释中文版链接给大家,有时间还是看看吧,毕竟不是每个人都知道官方解释说了什么。说不定就有遗落了的知识。

           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我,我发给你!

  • 相关阅读:
    Fluentd部署:如何监控Fluentd
    【615】国内国外经纬度坐标转换
    【614】矢量数据转栅格数据(cv2.fillPoly/cv2.polylines)
    【613】U-Net 相关
    【612】深度学习模型相关问题
    【611】keras 后端 backend 相关函数(Dice实现)
    面试官:new 关键字在 JVM 中是如何执行的?
    IntelliJ IDEA 2021.2 发布,这次要干掉 FindBugs 了!!
    Nginx 实现 10w+ 并发之 Linux 内核优化
    我们真的需要全栈开发吗?
  • 原文地址:https://www.cnblogs.com/zhangxiaoxu/p/5709772.html
Copyright © 2011-2022 走看看