iOS开发 - MagicalRecord

本文详细介绍了如何使用MagicalRecord技术在iOS开发中进行数据持久化操作,包括数据的增删改查、缓存管理和核心数据文件的创建。通过实例展示了如何在实际开发中高效地操作数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用方法

•   将字典导入model 类似于JSONModel的功能
    News * model = [News MR_importFromObject:dict];

·   将数组导入model 返回model数组 类似于JSONModel的功能
    self.dataArr = [NSMutableArray arrayWithArray:[News MR_importFromArray:arr]];

·   查询最大/最小值
    Person * person = [Person MR_findFirstOrderedByAttribute:@"age" ascending:NO];

使用过程

1.导入第三方
//初始化
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@“coreData文件名”];

2.创建coredata文件

3.#import “MagicalRecord.h”

4.增

Person * person = [Person MR_createEntity];
//要存储的具体的数据
person.age = @(arc4random()%20 +10);
person.name =@"名字";
//保存
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

5.删

//根据条件 获取要删除的数据
NSArray * arr = [Person MR_findByAttribute:@"age" withValue:@(21)];        
for (Person * person in arr) {
     //删除
     [person MR_deleteEntity];
     break;
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

6.改

Person * person = [Person MR_findFirst];
//修改
person.name = @"小米";
person.age = @(4);
//同步
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

7.查

NSArray * allArr = [Person MR_findAll];        
for (Person * person in allArr) {
            NSLog(@" %@ %d ",person.name,person.age.integerValue);
}         
NSPredicate * pred = [NSPredicate predicateWithFormat:@"%K>%@",@"age",@(20)];
[Person MR_findAllWithPredicate:pred];

缓存实例

1.数据源加载时 :  懒加载方法中为获取本地缓存文件

-(NSMutableArray *)dataArr{
if (!_dataArr) {      
    NSArray * arr = [News MR_findAll];
    _dataArr = [NSMutableArray arrayWithArray:arr];
}
return _dataArr;

2.请求数据时 :  

创建model时应该创建实体
News * model = [News MR_createEntity];

当数据请求下来的时候 应该根据唯一标识(主键)来判断是否已经缓存            
NSArray * arrRes = [News MR_findByAttribute:@"docid" withValue:dict[@"docid"]];          
        if (!arrRes.count) {
      //如果查询docid来判断 该数据是否已经存储了
      //如果没有存储 就插入数据
      [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
}
第一次数据请求结束时应该清空懒加载时数据源中的数据

数据结构变更时引发crash,解决方案:
http://blog.youkuaiyun.com/ysy441088327/article/details/8606019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值