第四篇《iOS 进一步封装CoreData的MagicalRecord的使用》

本文介绍如何使用MagicalRecord简化iOS开发中CoreData的操作流程。通过实例演示了MagicalRecord在增删改查等常见操作上的简便性,并提供了一种高效的数据管理方案。

尴尬脸,本来上一篇末说是要研究一下iOS的代理模式的,结果找着找着就找偏了,突然发现前几天研究的还是在坑里。跟项目组同事一讨论,CoreData太麻烦了,连最基本的CRUD都这么费劲,以后遇到个稍微麻烦点的不得烦死啊,所以找找封装好的三方类库,顺便咨询了一个研究iOS好多年的同学,推荐了MagicalRecord和CoreData小工具Mogenerator。这都是玩CoreData必备的啊~所以今天着重研究了MagicalRecord。MB的啊,简直傻瓜式的!前面一个周白瞎了。废话不多说,直接上代码。

(一)AppDelegate 的didFinishLaunchingWithOptions里面初始化MagicalRecord。

#pragma mark - 初始化magicalrecord
    [MagicalRecord setupCoreDataStack];
//    NSLog(@"%@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

(二)dao层封装的方法直接使用,前提得#import <MagicalRecord/MagicalRecord.h>,只贴关键代码。

一、初始化NSManagedObjectContext,我用的是另开线程。不在主线程搞事情。

-(instancetype)init{
    
    self = [super init];
    if(self){
        _persistenceManager = [PersistenceManager singleInstance];
        myContext =[NSManagedObjectContext MR_newContext];
    }
    return self;
}
二、查询。共三步:

1 创建实体;

DeviceInfo *devInfo = [DeviceInfo MR_createEntityInContext:myContext];
2 赋值;略。

3 保存

[myContext MR_saveToPersistentStoreAndWait];
三、更新。共三步:

1 查询

NSArray *result = [DeviceInfo MR_findByAttribute:@"deviceToken" withValue:deviceToken];
2 更新
        for (DeviceInfo *devInfo in result){
            devInfo.deviceToken = newDeviceToken;
        }
3 保存

[myContext MR_saveToPersistentStoreAndWait];
四、删除。两步。

1删除

[DeviceInfo MR_truncateAllInContext:myContext];

2保存

[myContext MR_saveToPersistentStoreAndWait];
五、查询。一步

NSArray *resultArray = [DeviceInfo MR_findAll];

到此结束,目前为止第一阶段基本告一段落了,走了无数条弯路,coder不容易啊,一定不要急,不要暴躁。加油吧!(ps:不保证后文不会自己打脸昂,说不定后文又把这个方案给推翻了呢! 大笑)。期待下期更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值