iOS持久化Core Data之三 托管对象模型的扩展
来源:互联网 发布:c语言闰年流程图 编辑:程序博客网 时间:2024/06/10 19:44
说明:按照《Core Data 应用开发》的思路整理记录
本篇主要研究模型中实体之间的关系,已达到重复数据用关系取代,数据间建立联系。
Item 可以表示一种商品, Unit 用来表示它的单位,如 g、kg等。
这里需要考虑对应关系,比如上图,一个物品 Item 对应有一种重量属性,而一种重量属性可能对应很多种物品 Item。
(一) 两个带关系的 NSManagedObject 如何自定义
对于 item
@class UnitCD;NS_ASSUME_NONNULL_BEGIN@interface ItemObj : NSManagedObject+ (NSFetchRequest<ItemObj *> *)fetchRequest;@property (nullable, nonatomic, copy) NSString *name;@property (nonatomic) float quantity;@property (nullable, nonatomic, retain) NSData *photoData;@property (nonatomic) BOOL collected;@property (nonatomic) BOOL listed;@property (nonatomic,retain) UnitCD *unit;@endNS_ASSUME_NONNULL_END对于 unit
#import <CoreData/CoreData.h>@interface UnitCD : NSManagedObject@property(nonatomic,copy) NSString *name;@property(nonatomic,retain) NSSet *items;@end
存储:
NSArray *arrayObjs = @[@"Milk", @"Apples", @"Bread", @"Cheese", @"Orange Juice"]; UnitCD *unit = [NSEntityDescription insertNewObjectForEntityForName:@"Unit" inManagedObjectContext:_coreDataHelper.context]; unit.name = @"Kg"; for(NSString *itemName in arrayObjs){ ItemObj *item = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:_coreDataHelper.context]; item.name = itemName; item.unit = unit; } [_coreDataHelper saveContext];
获取1:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Item"]; NSArray *fetchedObjects = [_coreDataHelper.context executeFetchRequest:request error:nil]; for(ItemObj *item in fetchedObjects){ NSLog(@"%@ : %@", item.name, item.unit.name); }
获取2:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Unit"]; NSArray *fetchedObjects = [_coreDataHelper.context executeFetchRequest:request error:nil]; for(UnitCD *unit in fetchedObjects){ NSLog(@"unit : %@", unit.name); NSSet *items = unit.items; NSEnumerator *enumerator = [items objectEnumerator]; ItemObj *value; while (value = [enumerator nextObject]) { NSLog(@"%@ : %@", value.name, value.unit.name); } } }
(三) 删除规则
配置关系时,要注意 Delete Rule 。规定删除时,相关对象如何处理。
1.Nullify
2.Cascade
3.Deny(validation error)
4.No Action
使用情景
(四) 数据验证错误
阅读全文
1 0
- iOS持久化Core Data之三 托管对象模型的扩展
- iOS持久化Core Data之二 托管对象模型的迁移
- IOS数据持久化之Core Data(三) - 验证输入
- iOS 之Core Data持久化存储
- IOS数据持久化之Core Data
- IOS数据持久化之Core Data(一) - 框架说明
- ios开发学习笔记--数据持久化之Core Data
- iOS 数据持久化 -- Core Data
- iOS 数据持久化 -- Core Data
- iOS 数据持久化 -- Core Data (2)
- iOS持久化Core Data之一 CoreDataHelper
- Core Data数据持久化的使用
- iOS 之core Data操作(三)
- IOS数据持久化之Core Data(二) - 单表操作
- IOS数据持久化之Core Data(四) - 多表查询
- iOS应用开发之Core Data数据持久化存储笔记
- Core Data 教程:多托管对象上下文
- iOS 数据持久化五-Core Data
- Java【public、private、protected区别】-访问权限
- 【LeetCode解题】1#Two Sum
- mac os上搭建最简单rtmp直播服务器
- Maven-利用intellij idea创建maven 多模块项目
- Android: Execution failed for task ':app:processDebugResources' 异常解决
- iOS持久化Core Data之三 托管对象模型的扩展
- ubuntu16.04下安装FTP
- 葵花宝典 十一 过滤器 监听器
- rmq(区间最值)
- Web Service简洁版调用公开手机api
- 导出PDF合同例子
- Maven 本地仓库明明有jar包,pom文件还是报错解决办法
- 卷积神经网络caffe
- Python模块