博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据持久化(六)之Using CoreData with MagicalRecord
阅读量:5223 次
发布时间:2019-06-14

本文共 3584 字,大约阅读时间需要 11 分钟。

         第五节里面,我介绍了CoreData的配置和主要的增删改查,可能非常多人会认为用它真繁琐.这里,我再介绍网上大神对它进行了人性化封装的第三方MagicalRecord,正如FMDB对sqlite进行了封装一样,MagicalRecord让你认为用CoreData非常方便.

      @基本配置:

         1.下载,将里面的MagicalRecord目录拖入你的project

         2.确定你创建的project没有勾选"Use Core Data"

         3.导入CoreData.frame框架

         4.在.pch文件里引入头文件"CoreData+MagicalRecord.h"(仅仅能,必须在这里引用)

               @详细操作:

          1.初始化(在didFinishLaunchingWithOptions中)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    self.window.backgroundColor = [UIColor whiteColor];        HMTRootViewController *rootVC = [[HMTRootViewController alloc] init];    self.window.rootViewController = rootVC;        //  初始化    [MagicalRecord setupCoreDataStackWithStoreNamed:@"MT.sqlite"];        [self.window makeKeyAndVisible];    return YES;}- (void)applicationWillTerminate:(UIApplication *)application{    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.    [MagicalRecord cleanUp];}
               
2.创建一个Model做測试,创建一个Person的Entity

            3.增删改查详细操作

- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.        //  初始化一个Person对象    /**     *  这里要注意:默认,xcdatamodeld实体描写叙述表名(name)和类名(class)必须保持一致     *  假设name和class不一致,实现MagicalRecord_MOGenerator协议中得entityName方法来改变     @implementation NSManagedObject (MagicalRecord)          + (NSString *) MR_entityName;     {     NSString *entityName;          if ([self respondsToSelector:@selector(entityName)])     {     entityName = [self performSelector:@selector(entityName)];     }          if ([entityName length] == 0) {     entityName = NSStringFromClass(self);     }          return entityName;     }     */    Person *person = [Person MR_createEntity];    person.name = @"HMT";    person.sex = @"男";    person.age = @25;    }//  加入操作- (void)addDataOperation{    // 文档解释:For any entities to actually be saved / updated / deleted on disk call following method(添加,更新,删除 都要用这种方法来保存数据)    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];;}//  查询操作- (void)selectDataOperation{    //  find数据库中全部的人    NSArray *peoples = [Person MR_findAll];    //  find数据库中第一条记录    Person *firPerson = [Person MR_findFirst];    //  find数据库中全部name属性为"HMT"的人并依照年龄age排序    NSArray *otherPeoples = [Person MR_findByAttribute:@"name" withValue:@"HMT" andOrderBy:@"age" ascending:YES];}//  更新操作- (void)upDataOperation{    //  选定要改动的人    NSArray *persons = [Person MR_findByAttribute:@"name" withValue:@"HMT"];    for (Person *person in persons) {        person.name = @"WDQ";    }    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];    }//  删除操作- (void)deleteDataOperation{    //  delete数据库中全部人    [Person MR_truncateAll];    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];        //  依据条件delete特定的某个人    NSArray *persons = [Person MR_findByAttribute:@"name" withValue:@"HMT"];    for (Person *person in persons) {        [person MR_deleteEntity];    }    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];}
          4.额外配置(取消前缀名和不打印日志信息)

//If you want to omit the "MR_" prefix to all MagicalRecord realted method calls define following before importing the MagicalRecord header#define MR_SHORTHAND//Turn off MagicalRecord logging, again by defining following before header import#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0

             
 @以上仅仅是一些基本操作,其它能够自己去查看头文件

转载于:https://www.cnblogs.com/llguanli/p/7084476.html

你可能感兴趣的文章
寒假作业01
查看>>
Linux常用命令
查看>>
正确适配苹果ATS审核要求的姿势
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>
例1-1
查看>>
Java 8 新特性之 Stream&forEach&map&filter&limit&sorted&统计函数&Collectors&并行(parallel)程序(转)...
查看>>
Windows建立Cucumber和Ruby测试环境
查看>>
HBase中MVCC的实现机制及应用情况
查看>>
马达调速器,直流马达调速器,直流调速器
查看>>
【转】概要设计怎么写
查看>>
前端编码规范小记
查看>>
C#编程(二十五)----------接口
查看>>
c如何弹出保存路径/保存文件对话框
查看>>
HTML标签二
查看>>
caffe的在ubuntu下面的安装
查看>>
Python 3语法小记(九) 异常 Exception
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>
ArcGIS自定义工具箱-字段合并
查看>>
git init
查看>>