深入浅出MagicalRecord-03
来源:互联网 发布:汉诺塔递归算法c实现 编辑:程序博客网 时间:2024/05/16 18:55
这节我们来一起学习下MagicalRecord对数据的增删改查,内容主要来自于 MagicalRecord的github资料。
1. 增-创建实体
创建实体
Person *myPerson = [Person MR_createEntity];指定创建的上下文中创建实体
Person *myPerson = [Person MR_createInContext:otherContext];
2. 删-删除实体
删除一个实体[myPerson MR_deleteEntity];删除指定上下文中的实体
[myPerson MR_deleteInContext:otherContext];删除所有实体
[Person MR_truncateAll];删除指定上下文中的所有实体
[Person MR_truncateAllInContext:otherContext];
3. 改-修改实体
Person *person = ...;person.lastname = "xxx";
4. 查-查询实体
查询的结果通常会返回一个NSArray
结果。a) 基本查询
从持久化存储(PersistantStore)中查询所有的Person实体
NSArray *people = [Person MR_findAll];查询出所有的Person实体并按照lastName升序(ascending)排列
NSArray *peopleSorted = [Person MR_findAllSortedBy:@"lastName" ascending:YES];查询出所有的Person实体并按照lastName,firstName升序(ascending)排列
NSArray *peopleSorted = [Person MR_findAllSortedBy:@"lastName,firstName" ascending:YES];查询出所有的Person实体并按照lastName升序,firstName降序(ascending)排列
NSArray *peopleSorted = [Person MR_findAllSortedBy:@"lastName:NO,firstName" ascending:YES];//或者NSArray *peopleSorted = [Person MR_findAllSortedBy:@"lastName,firstName:YES" ascending:NO];查询出所有的Person实体,lastName为Forrest的实体
Person *person = [Person MR_findFirstByAttribute:@"firstName" withValue:@"Forrest"];
b) 高级查询
使用NSPredicate
来实现高级查询。
NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"department IN %@", @[dept1, dept2]];NSArray *people = [Person MR_findAllWithPredicate:peopleFilter];
c)返回 NSFetchRequest
NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"department IN %@", departments];NSFetchRequest *people = [Person MR_requestAllWithPredicate:peopleFilter];
d)自定义 NSFetchRequest
NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"department IN %@", departments];NSFetchRequest *peopleRequest = [Person MR_requestAllWithPredicate:peopleFilter];[peopleRequest setReturnsDistinctResults:NO];[peopleRequest setReturnPropertiesNamed:@[@"firstName", @"lastName"]];NSArray *people = [Person MR_executeFetchRequest:peopleRequest];
e)查询实体的个数
返回的是NSNumber类型
NSNumber *count = [Person MR_numberOfEntities];基于NSPredicate查询条件过滤后的实体个数
NSNumber *count = [Person MR_numberOfEntitiesWithPredicate:...];返回的是NSUInterger类型
+ (NSUInteger) MR_countOfEntities;+ (NSUInteger) MR_countOfEntitiesWithContext:(NSManagedObjectContext *)context;+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter;+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter inContext:(NSManagedObjectContext *)
f)合计操作
NSInteger totalFat = [[CTFoodDiaryEntry MR_aggregateOperation:@"sum:" onAttribute:@"fatCalories" withPredicate:predicate] integerValue];NSInteger fattest = [[CTFoodDiaryEntry MR_aggregateOperation:@"max:" onAttribute:@"fatCalories" withPredicate:predicate] integerValue];NSArray *caloriesByMonth = [CTFoodDiaryEntry MR_aggregateOperation:@"sum:" onAttribute:@"fatCalories" withPredicate:predicate groupBy:@"month"];
g)从指定上下文中查询
NSArray *peopleFromAnotherContext = [Person MR_findAllInContext:someOtherContext];Person *personFromContext = [Person MR_findFirstByAttribute:@"lastName" withValue:@"Gump" inContext:someOtherContext];NSUInteger count = [Person MR_numberOfEntitiesWithContext:someOtherContext];
0 0
- 深入浅出MagicalRecord-03
- 深入浅出MagicalRecord-01
- 深入浅出MagicalRecord-02
- 深入浅出MagicalRecord-04
- 深入浅出MagicalRecord(1)
- 深入浅出MagicalRecord(2)
- 深入浅出MagicalRecord(3)
- 深入浅出MagicalRecord(4)
- MagicalRecord
- MagicalRecord
- MagicalRecord入门教程
- MagicalRecord 2.1
- MagicalRecord使用方法
- MagicalRecord 2.1
- MagicalRecord入门教程
- MagicalRecord入门教程
- MagicalRecord入门教程
- MagicalRecord入门教程
- Android开发工具资料Android Manifest 权限描述大全 随时随地查询权限描述。
- Android——浅谈归纳Handler各种用法
- android 的textview显示过长文本时用一个按钮控制展开与收缩
- 删除回收站右键"找回清空的文件"
- 二分法查找
- 深入浅出MagicalRecord-03
- 关于读取Properties文件以及路径问题
- Java获取IP地址 IPUtil.getRemoteIp(request)
- HTML5绘图之Canvas标签 绘制坐标轴
- OpenJDK和SunJDK有啥区别?
- 各大热补丁方案分析和比较
- 命令用法 locate,grep,ps -ef,
- android framelayout 拖动时,界面压缩变形问题
- 精确覆盖问题-跳舞链算法