脸,本来上一篇末说是要研究一下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:不保证后文不会自己打脸昂,说不定后文又把这个方案给推翻了呢!
