如需使用系统的CoreData,十分的繁琐,现在3方库封装的CoreData已经非常的成熟,下面就介绍MagicRecoard
1导入方式很多,首先,我还是介意从CocoaPods导入,因为这样可以实时的更新我们的3方库,以便使用最新的版本
下面我要介绍一个场景
在数据请求成功后,将数据存入数据库,然后在数据请求失败时,要求读取数据库中的内容
首先,导入 MagicalRecord 你可以用Pods导入,也可以用拖文件的方式导入
包含头文件
#import <MagicalRecord/MagicalRecord.h>
需要在appdelegate里做如下的操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[MagicalRecord setupAutoMigratingCoreDataStack]
}
- (void)applicationWillTerminate:(UIApplication *)application {
[MagicalRecord cleanUp];
}
1.在数据请求成功时,我们需要遍历一下数据库,看看有没有数据,有的话就刷新(我这里没有提供刷新的方法),没有的话就新建保存
NSArray *subArr = [Recommand_Subj MR_findAll];
这里的 Recommand_Subj是一个Entity
2.写入数据
//创建Entity,相当于创建一张表
Recommand_Subj *recommand_subj= [Recommand_Subj MR_createEntity];
//为表里的字段赋值
recommand_subj.fontId = @"12345";
recommand_subj.fontName = @"哈哈哈哈";
//存储数据
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
3.接下来我们要看看读取数据
NSArray *subArr = [Recommand_Subj MR_findAll];
for (Recommand_Subj *recommandSubj in subArr) {
//我这里将从数据库读取出来的数据对象转化成模型了,其实不转也没什么问题,吧拿到的recommandSubj直接放到数据源数组中使用
NSDictionary *dict = [recommandSubj mj_keyValues];
FZRecommandModel *model = [FZRecommandModel mj_objectWithKeyValues:dict];
[self.subjectPicBosArr addObject:model];
}
截止到这里,我们的数据缓存工作就完成了,现在看起来是不是很简单呢,接下来介绍几个其他的常用的方法
4.更新数据
//查找数据库中的所有Recommand_Subj。
NSArray *recommandSubjArr = [Recommand_Subj MR_findAll];
//查找所有的Recommand_Subj并按照fontid排序。
NSArray *recommandSubjArr= [Recommand_SubjMR_findAllSortedBy:@"fontId" ascending:YES];
//查找所有fontName属性为哈哈哈的Recommand_subj记录。
NSArray *recommandSubjArr= [Recommand_Subj MR_findByAttribute:@"fontName" withValue@“哈哈哈”];
//查找数据库中的第一条记录
Recommand_Subj *recommandSubjArr = [Recommand_Subj MR_findFirst];
5.添加数据
Recommand_Subj *recommandSubj = [Recommand_Subj MR_createEntity];
recommandSubj.fontid = @"111";
recommandSubj.fontName = @"我是谁";
Recommand_Subj *recommandSubj = [Recommand_Subj MR_createEntity];
6.更新数据
Recommand_Subj *recommandSubj = 这里查找到对应的Recommand_Subj对象
recommandSubj.fontName = @"被修改过的";
[NSManagedObjectContext MR_defaultContext] MR_save];
7.删除数据
Recommand_Subj *recommandSubj = ...;//此处略
[recommandSubj MR_deleteEntity];
[[NSManagedObjectContext MR_defaultContext] MR_save];