Magical Record的基本使用
1.Magical Record的出现
iOS开发中常使用core Data做数据本地化来代替直接操作sqlite3。因为使用core Data的时候可以调用相应的方法直接将对象存到数据库中,避免了写sql语句。可是在使用的时候,有个问题,就是在将数据库和模型关联的时候需要写大量的代码,而且那些代码还非常不好记忆。
Magical Record的出现在一定程度上缓解了这个问题,降低了Core Data的使用门槛。
2.安装
1.新建一个iOS项目,创建的是在向导页中不要勾选Core Data。
2.下载Magical Record,下载完成后将其文件夹拖到工程中
3.在工程中添加CoreData.FrameWork库
4.在PrefixHeader.pch文件中包含MagicalRecord.h头文件
3.pch文件的创建
在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的 pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中 去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,但潜在的也带来了一些问题,这也是 在Xcode6中默认不再创建pch的原因吧。
但有些时候,还是需要pch文件的,那么怎么在Xcode6中添加一个pch文件呢?
1. 首先,Command+N,打开新建文件窗口:ios->other->PCH file,创建一个pch文件,添加需要引入的头文件名:
2. 其次,修改工程配置文件,将刚刚创建的PCH file的路径添加到building setting中的precompile header选项中去,注意debug和release两栏都要添加
3. 至此,大功告成,编译一遍,新添加的pch文件就可以正常使用了^_^。 >
参考:http://blog.csdn.net/lihuiqwertyuiop/article/details/39268101
4.创建模型文件
*我们还是创建一个学生模型,有name、age、face和score 4个字段
1. 创建一个名为Model的模型文件。创建方式和创建一个新的类一样,先按commend+N,出现以下界面。选core Data -> Data Model -> Next ->给模型文件命名 —>Create。 创建完成后工程中会多出一个.xcdatamodeld文件。
2. 选中刚才创建好的.xcdatamodeld文件,点击左下角的add Entity,更改Entity的名字Student。
1. 上图中点击+添加4个属性name(String)、age(Integer16)、face(Integer16)、score(Float)
2. 创建一个和实体Student对应的类(要求含上面创建的所有属性)
5.使用Magical Record
初始化Magical Record
1. 在AppDelegate.m中添加以下代码来对Magical Record进行初始化
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
[MagicalRecord setupCoreDataStackWithStoreNamed:@”myDataBase.sqlite”];
return YES;
}
1. 插入记录
//1.添加记录
Student * student = [Student MR_createEntity]; student.name = @”余婷”; student.face = @100; student.age = @18;
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
1. 查询记录
//查询所有的数据 NSArray * students = [Student MR_findAll];
//查找并按按年升序排序
NSArray * sortstudents = [Student MR_findAllSortedBy:@”age” ascending:YES];
//查找所有的年龄是20的人
NSArray * allAges = [Student MR_findByAttribute:@”age” withValue:@20];
//查找数据库的第一条数据
Student * fStudent = [Student MR_findFirst];
1. 更新记录首先按照上述的查询记录的方法查找到需要更新的Student进行属性赋值,然后使用NSManagedObjectContext保存即可更新。
Student * fStudent = [Student MR_findFirst];
fStudent.name = @”张三”;
fStudent.age = @25;
fStudent.face = @59;
fStudent.score = @68.5;
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
1. 删除记录和更新记录类似,删除记录前先查询到你需要删除的记录,然后使用NSManagedObjectContext 去删除记录
Student * fStudent = [Student MR_findFirst];
[fStudent MR_deleteEntity];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
6.说明
参考链接:http://blog.csdn.net/kuizhang1/article/details/21200367