coredata

CoreData 使用

末鹿安然 提交于 2020-03-06 13:37:05
一、CoreData的简单使用 准备工作 创建数据库 新建文件,选择 CoreData -> DataModel 添加实体(表), Add Entity 给表中添加属性,点击 Attributes 下方的 ‘+’ 号 创建模型文件 新建文件,选择 CoreData -> NSManaged Object subclass 根据提示,选择实体 通过代码,关联数据库和实体 - (void)viewDidLoad { [super viewDidLoad]; /* * 关联的时候,如果本地没有数据库文件,Coreadata自己会创建 */ // 1. 上下文 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init]; // 2. 上下文关连数据库 // 2.1 model模型文件 NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; // 2.2 持久化存储调度器 // 持久化,把数据保存到一个文件,而不是内存 NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]

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

旧时模样 提交于 2020-03-02 18:42:08
iOS中CoreData数据管理系列四——进行数据与页面的绑定 一、引言 在上一篇博客中,我们讨论了CoreData框架中添加与查询数据的操作,事实上,在大多数情况下,这些数据都是由一个UITableView表视图进行展示的,因此,CoreData框架中还未开发者提供了一个类NSFetchedResultsController,这个类作为桥接,将视图与数据进行绑定。 添加与查询数据操作: http://my.oschina.net/u/2340880/blog/611430 。 二、进行数据初始化 NSFetchedResultsController的初始化需要一个查询请求和一个数据操作上下文。代码示例如下: //遵守协议 @interface ViewController ()<NSFetchedResultsControllerDelegate> { //数据桥接对象 NSFetchedResultsController * _fecCon; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //进行初始化操作 NSURL *modelUrl = [[NSBundle mainBundle]URLForResource:@"Model" withExtension:@

CoreData 与 SQLite 比较

若如初见. 提交于 2020-03-02 18:41:53
CoreData.framework : iOS中提供了对原始SQLite数据库API访问的封装,通过这个framework来管理数据缓存和持久数据要比使用SQL语句操作SQLite数据库简单和方便许多。 机制:通过framework来存储和查询数据只需要使用framework提供的类就可以,你可以完全使用对象的形式来管理你的数据以及数据之间的关系,framework已经很好地将数据库 表和字段 封装成了 对象和属性 ,表之间的 一对多、多对多关系 则封装成了 对象之间的包含关系. 通过 relationship 来表示: 一对多时:设置为 properties 项选中 Optional, Plural 选项 To-Many Relationship 选中; 多对一反向关系时: properties 项选中 Optional, Count 项选中Minimun 和 Maximun 并分别设置其值为1; Core Data 特点: 1)Core Data的强大之处就在于这种关系可以在 一个对象更新时,其关联的对象也会随着更新 ,相当于你更新一张表的时候,其关联的其他表也会随着更新。 2)Core Data的另外一个特点就是提供了更简单的性能管理机制,例如,使用NSFetchedResultsController类

如何使用NSFetchedResultsController

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-02 18:22:23
不知不觉我们已经来到了Core Data系列教程的最后一部分了,在这里我们要讨论如何使用NSFetchedResultsController来优化我们的应用,提高应用的运行速度,减少其内存占用。 你是不是已经忘记了以前讲过什么呢?我们来复习一下,在第一篇教程中:《 iOS教程:Core Data数据持久性存储基础教程 》中我们讲了如何为一个iOS程序创建一个Core Data的数据模型和测试的方法,还有我们还把这个数据模型作为数据源连接到了一个表视图上。 在第二篇教程:《 iOS教程:如何使用Core Data – 预加载和引入数据 》,我们讲了如何解析不同格式的数据文件到一个Core Data通用的SQlite数据库中,还有如何将这个数据库移植到我们的iOS项目上去,好让我们的应用有一些初始数据。 你可以从 这里 下载第二部分的源码。 为什么要使用 NSFetchedResultsController? 到目前为止,我们就像在使用SQLite3的方法一样,因为本质上Core Data就是在操作SQLite数据库,但是我们写的代码比直接使用SQLite更少,我们使用各种数据库功能也更容易。 但是,我们还有一个很好用的Core Data特性没有用上,这个特性能够很大程度上的提高我们程序的性能,他就是:NSFetchedResultsController。 现在在我们的例子程序中

ios应用数据存储方式(Coredata)

寵の児 提交于 2020-02-15 16:52:03
1.Core Data 是数据持久化存储的最佳方式 2. 数据最终的存储类型可以是: SQLite 数据库, XML ,二进制,内存里,或自定义数据类型 3. 好处:能够合理管理内存,避免使用 sql 的麻烦,高效 4. 注意 CoreData 的创建方式 使用步骤 : 创建数据库- - - 获取程序中的 appdelegate 对象 - - 然后就可以进行增查改删 增加步骤 :1. 初始化实体--2.增加数据 - -3. 保存 coredata 数据 查询步骤 : 1. 创建一个空语句 - -2. 创建要查询的实体--3. 创建要查询的语句—--4 . 对返回的结果进行遍历 Student.h #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @interface Student : NSManagedObject @property ( nonatomic , retain ) NSString * name; @property ( nonatomic , retain ) NSNumber * age; @end ====================================================== Student.m #import "Student.h"

iOS中CoreData数据管理系列三——添加与查询数据

帅比萌擦擦* 提交于 2019-12-20 16:43:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> iOS中CoreData数据管理系列三——添加与查询数据 一、引言 在前两篇博客中,分别介绍了iOS中CoreData框架创建数据模型和CoreData框架中的三个核心类。博客地址如下: iOS中CoreData框架简介: http://my.oschina.net/u/2340880/blog/610488 。 CoreData框架中三个核心的类: http://my.oschina.net/u/2340880/blog/610948 。 本篇博客将综合使用三个核心的类,进行数据创建和查询的操作介绍。 二、建立数据对象类 前面博客介绍的NSManagedObjectModel是数据管理模型,可以将其类比如数据库,NSManagedObjectModel中存放着数据库的结构信息。 NSEntityDescription是实体描述对象,它可以类比如数据库中的表, NSEntityDescription存放的是表的结构信息。这些类都是一些抽象的结构类,并不存储实际每条数据的信息,具体的数据由NSManagedObject类来描述,我们一般会将实体类化继承于NSManagedObject。 Xocde工具提供了快捷的实体类化功能,还拿我们一开始创建的班级与学生实体来演示,点击.xcdatamodeld文件

coreData的初步认识

江枫思渺然 提交于 2019-12-05 22:41:11
概述 Core Data不是数据库,⽽而是使⽤用数据库、XML、⼆二进制⽂文件等⽅方式来存储数据的⼀一 个框架。 Core Data是iOS3之后才出现的⼀一个框架,允许我们以⾯面向对象的⽅方式储存和管理数 据。使⽤用Core Data框架,我们可以很轻松有效地通过⾯面向对象的接⼝口管理数据。 Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据, 保存在SQLite3数据库⽂文件中,也能够将保存在数据库中的数据还原成OC对象。 在数据操作过程中,⽆无需编写任何SQL语句。 coreData核心对象 NSManagedObject:模型对象,或者叫实体(entity),可理解为OC⾥里的对象。 NSManagedObjectModel:模型⽂文件(.xcdatamodeld),记录所有的模型对象及对象 的属性 NSPersistentStoreCoordinator:持久化存储协调者,是数据库和程序之间的桥梁, ⽤用来设置数据存储的名字,位置,存储⽅方式,和存储时机。⽤用来执⾏行具体的CRUD操作。 NSManagedObjectContext:对象管理上下⽂文,⽤用户所有的持久化操作都是通过此 对象。再由此对象调NSPersistentStoreCoordinator对象执⾏行具体的操作。 coreData使用步骤 创建模型文件 添加实体

iOS 数据持久化

邮差的信 提交于 2019-12-05 15:38:37
iOS 数据持久化 在iOS中,常用的数据持久化操作有四种:plist文件,NSUserdefaults,SQLite3,CoreData. Plist文件:也就是我们常说的属性列表,它是一种明文的轻量级存储方式,存储的格式有很多种,最常规的是XML格式.Plist文件只能用数组或者字典进行读取. 优点: 用来存储少量的数据,响应速度快 其赋值方式简单 缺点: 1.正如优点一样,只能存储少量数据,不能存储大文件数据 2.明文存储,所以其安全性欠缺 NSUserdefaults : 适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的. 其优点与plist文件差不多.但是在使用NSUserdefaults的时候,特别需要注意,因为它不是即时将数据写入文件的,为了防止数据丢失,我们通常需要在后面就手动将其写入文件. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"name" forKey:@"name"]; [defaults synchronize]; SQLite3 : 是一个轻量级,跨平台的小型数据库,其拥有可移植性高、有着和MySql几乎相同的数据库语句以及无需服务器即可使用的优点: 1.可以存储大量的数据,存储和检索的速度非常快

使用CoreData的轻量级自动数据迁移

核能气质少年 提交于 2019-12-04 19:09:54
使用IOS的CoreData进行存储很方便,CoreData已经帮我们做了很多基础的工作,一般情况下没必要自己操作数据库了。 在开发中修改了实体模型,可能会遇到schema incompatibility的错误,这是因为修改了数据结构,要进行数据迁移。 其实很多简单的情况,不用这么麻烦,Coredata提供了轻量级的自动数据迁移,比如以下三个情况会自动进行: 1.简单的增加一个字段 2.把一个必填字段改为可选字段 3.把可选字段改为必填字段(但一定要定义默认值) 怎样开启自动迁移的功能?分三步 1.在App delegate类里修改persistentStoreCoordinator方法 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (__persistentStoreCoordinator != nil) { return __persistentStoreCoordinator; } NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"WorkXP.sqlite"]; NSError *error = nil; __persistentStoreCoordinator = [

iOS应用数据存取之数据库存储-----Core Data

给你一囗甜甜゛ 提交于 2019-12-04 12:52:13
iOS应用数据存取的常用方式有如下几种 XML属性列表 —— PList NSKeyedArchiver 归档 Preference(偏好设置) SQLite3 Core Data 现在我想记录以下我对core Data的认识 存在理由:苹果公司为了关照不会使用SQL数据库的程序员,而产生的,面向对象操作数据库的oc语言 Core Data简介: Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据 Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象 在数据操作过程中,无需编写任何SQL语句 要使用Core Data,需要导入CoreData框架 NSPersistentStoreCoordinator的产生: 为了让模型对象和数据库能够连接起来,苹果公司就创建了NSPersistentStoreCoordinator这个对象,用来作为他们之间的桥梁! [NSManagedObjectModel mergedModelFromBundles:nil];合并所有的图形化定义的Mode--------------》[