天天看点

CoreData+MagicalRecord的使用

1.首先导入文件,地址:https://github.com/magicalpanda/MagicalRecord

2.然后创建xcdatamodeld和实例对象,如下图

CoreData+MagicalRecord的使用

不会创建的话请参照我的另一份文章:http://blog.csdn.net/yin_xianwei/article/details/20618755

3.导入头文件,大家都会

#import "CoreData+MagicalRecord.h"
           

4.在appdelgate创建数据库

[MagicalRecord setupCoreDataStackWithStoreNamed:[NSString stringWithFormat:@"%@.sqlite", @"Test"]];
           

5.启动应用之后你会在你的模拟器沙盒路径下的Library/Application Support/工程名/  下看到数据库文件(iOS7)

6.接下来就是操作它了

你的Entity会有这些方法

6.1查找

//查找所有
   NSArray *ary1 = [DogEntity MR_findAll];
    
    //查找并按name升序排序
  NSArray *ary2 = [DogEntity MR_findAllSortedBy:@"name" ascending:YES]; //查找type为2的数据
   NSArray *ary3 = [DogEntity MR_findByAttribute:@"type" withValue:@"2"];
//查找第一条数据
	 DogEntity *entyty = [DogEntity MR_findFirst];
           

6.2增加

DogEntity *dog = [DogEntity MR_createEntity];
    
    dog.name = @"huahua";
    dog.type = @"2";
    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
           

6.3更新

NSArray *ary = [DogEntity MR_findAll];
   
     DogEntity *dog = [ary lastObject];
        dog.name = @"hhhhhh";
        [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
           

6.4删除

NSArray *ary = [DogEntity MR_findAll];
   
        DogEntity *dog = [ary lastObject];
        [dog MR_deleteEntity];
        [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
           

7.那么问题来了,你会发现所有的操作都会有一个MR_前缀(反正我觉得挺cool的),想要去掉的话就这样导入头文件:

#define MR_SHORTHAND
    #import "CoreData+MagicalRecord.h"
           

8.有一些常用的方法

根据某个属性某个条件查询
    NSArray *dogs = [DogEntity MR_findByAttribute:@"name" withValue:@"Y.X."];
    
    根据排序取得搜索结果
    NSArray *dogs = [DogEntity MR_findAllSortedBy:@"name" ascending:YES];
           
//    查询所有记录
+ (NSArray *) MR_findAll;
//根据上下文句柄查询所有记录
+ (NSArray *) MR_findAllInContext:(NSManagedObjectContext *)context;
//根据某个属性排序查询所有记录
+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending;
//根据某个属性排序以及上下文操作句柄查询所有记录
+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context;
//根据某个属性排序用谓词来查询记录
+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm;
//根据某个属性排序以及上下文操作句柄用谓词来查询记录
+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context;
//根据谓词查询
+ (NSArray *) MR_findAllWithPredicate:(NSPredicate *)searchTerm;
//根据谓词以及上下文操作句柄来查询
+ (NSArray *) MR_findAllWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context;
//以下都是查询一个对象时的操作,与上面重复,不一一赘述
+ (instancetype) MR_findFirst;
+ (instancetype) MR_findFirstInContext:(NSManagedObjectContext *)context;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchterm sortedBy:(NSString *)property ascending:(BOOL)ascending;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchterm sortedBy:(NSString *)property ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm andRetrieveAttributes:(NSArray *)attributes;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm andRetrieveAttributes:(NSArray *)attributes inContext:(NSManagedObjectContext *)context;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortBy ascending:(BOOL)ascending andRetrieveAttributes:(id)attributes, ...;
+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortBy ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context andRetrieveAttributes:(id)attributes, ...;
+ (instancetype) MR_findFirstByAttribute:(NSString *)attribute withValue:(id)searchValue;
+ (instancetype) MR_findFirstByAttribute:(NSString *)attribute withValue:(id)searchValue inContext:(NSManagedObjectContext *)context;
+ (instancetype) MR_findFirstOrderedByAttribute:(NSString *)attribute ascending:(BOOL)ascending;
+ (instancetype) MR_findFirstOrderedByAttribute:(NSString *)attribute ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context;
           

参考:http://www.haogongju.net/art/2570005