苹果开发 笔记(71)CoreData

这几天复习了一下CoreData的内容,发现这个东西挺不错。但要掌握的话还需要一定时间积累。参考ios 的开发指南,里面讲解了这部分介绍,内容也值得参考。对于ios 的数据持久化,提供了好几个方案。如plist,sqllite,coreData 。plist用得比较广,在创建工程项目就有,所以这个应该很容易理解。sqllite 小型的数据库,需要有一些sql的知识点。coreData 就是将sqllite这种操作简化成一种对象关系映射。
今天还没准备敲打代码。先和上次TextKit记录几个关键字的类。
NSManagedObjectContext 被管理对象上下文
NSManagerdObjectModel 被管理对象的模型
NSPersistentStoreCoordinator 持久化存储协调器
NSEntityDescription
NSFetchRequest
NSPredicate

整理一下网上教程视频演示
CoreData 教程

学习过数据库的操作,经常会有四种是我们常用的动作。插入,删除,修改,查询 。这四个就是我们使用时候需要构建的对象了。有了这个模式,使用的时候就可以参考这套路来实现这些操作。

insertObject
removeObject
modifyObject
findAllObject

CoreData 经常和文件操作系统关联一下。所以既要联系其他的知识了,如文档的地址。model的链接。

NSString *documentDirectory  = [NSSearchPathForDirectoriesInDomain(NSDocumentDirectory,NSUserDomaininMask,YES) lastObject];
NSURL *modelURL = [NSBundle mainBundle] URLForResource:@"<xcodatamodeld 文件>" withExtenstion:@"momd"];
NSManagedObjectContext *cxt = [self managedObjectContext];
NSManagedObject *note = [NSEntityDescription
    insertNewObjectForEntityForName:@"Book"
    inManagedObjectContext:cxt];
    ];

在创建项目下可以勾选CoreData 的选项会对其生成相应momd 和 sqlite的文件,你会发现当你不勾选然而还得想手动添加两个文件 则还需要一定工序来完成。在cmd +N 快捷键打开 可以 里面有CoreData 的选项,里面生成momd的文件,但是发现还没生成sqlite文件。于是使用文件操作来完成这个文件部署。NSFileManager的createFileAtPath的方法来实现sqlite文件的操作。这个是创建文件的一个常用操作。

在使用CoreData 的时候 突然碰到了 unrecognized selector sent to instance 的问题,好奇怪,大部分博客里面说是对象被释放掉引起了,前段时间使用音频服务也试过这样一回事。声明了对象,外部引用后对象就没那么快释放掉。这个坑还是第一次遇到,发现在CoreData 一个插入的操作却引起这样的问题还是不理解是什么原因。对着书敲打一篇案例发现会遇到这样奇怪的问题还是对一些苹果内存机制不理解产生疑惑。

明天继续修改这部分内容。

你可能感兴趣的:(苹果开发 笔记(71)CoreData)