Core Data学习笔记

1.Core Data提供通用及自动化的对象生命周期管理方案,包括持久化,其特点包括:
1)undo/redo支持;
2)对象间的关系管理;
3)懒加载和写拷贝等内存高效使用方式;
4)属性值的自动校验;
5)schema迁移;
6)NSFetchedResultsController与UITableView是一对好基友,可与界面深度结合;
7)KVC/KVO自动支持;
8)对数据进行筛选和分组;
9)支持SQL功能的语法,使用NSPredicate可支持高级查询及各种函数;
10)通过内置的版本跟踪实现多个与请求时的冲突解决方案;
2.Core Data的几大模块内容:
1)Managed Object Model,数据模型的描述,包括实体、属性以及Fetch Request等;
2)Managed Object Context,参与对数据对象进行操作的全过程,包括监测和支持undo/redo操作;
3)Persistent Store Coordinator,相当于数据文件管理器,处理底层的对数据文件的读取与写入;
4)Managed Object,数据对象,与Managed Object Context相关联;
5)Controller,controller可以与Managed Object Context绑定,使controller的内容来自对应的Context;
3.使用Core Data的步骤:
1)使用xcdatamodeld文件图形界面定义entity并生成相应的类;
2)在app delegate中初始化三个对象:将1文件定义的内容生成managedObjectModel对象==>使用managedObjectModel对象初始化persistentStoreCoordinator对象==>使用persistentStoreCoordinator对象初始化managedObjectContext对象;
3)今后所有的操作都只针对managedObjectContext对象即可;
4.获取数据通过NSFetchedResultsController进行,给它一个fetchRequest参数,里面包括要查找的实体等约束,调用performFetch即可;数据的增删改查都可通过NSFetchedResultsController的代理得到回调,回调包括对象和对象的位置下标,从而进行相应的界面响应;
5.[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:addingContext]方法可以在Context中增加对象,调用[addingManagedObjectContext save:&error]可以保存;
6.使用[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]可删除对象;

7.[managedObject setValue:self.datePicker.date forKey:self.editedFieldKey];可修改对象的值,而且此方法会触发KVO相关逻辑;这也是为什么Core Data的属性用dynamic修饰的原因;

8.本身managedObjectContext和persistentStoreCoordinator等对象都不支持跨线程操作,但可通过建立多个managedObjectContext并指定彼此parent的方式关联,而多个context可分别指定不同的并发类型,在不同的线程中操作,它们可以关联同一个persistentStoreCoordinator,因为persistentStoreCoordinator使用之前会有锁,这样可间接实现多线程,NSManagedObjectContextDidSaveNotification可接收其它context保存了数据的通知。

9.Core Data有两种数据迁移的办法,第一种是轻量迁移,对于只增加字段或实体等简单的修改,可以存储coordinator的时候设置对应的属性;第二种是标准迁移,需要设置一些Mapping来实现字段增删改等的迁移,这块没有深入,只能说如果有使用一core data时,尽量设计得全一些,如果需要面对迁移的情况,参照苹果官方文档:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/CoreDataVersioning.pdf。

10.nil和NULL的区别:从代码层面来说,这两个内容都表示空,也都表示数字0,是100%可以互换的,但从概念上还是要区分,nil用来和oc对象比较,NULL用来和指针比较。

11.Transformable attribute是指现有core data中基本支持的数据字段类型只有字符串,数值等几种,如果需要存储自定义的类型或一些复杂的技术类型,则需要将这些对象转化为NSData之后再存储,这个转换过程由NSValueTransformer或其子类的实例来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值