首页 > 移动平台 > 详细

iOS CoreData 开发之数据模型关系

时间:2016-02-17 09:31:44      阅读:205      评论:0      收藏:0      [点我收藏+]

接着上一篇,上一篇中,我们简单的实现了一个用户实体,本次添加一个用户信息实体,与用户实体相关联,关系为1:1。

新建一个实体UserInfo:

技术分享

添加字段:

技术分享

 

下面就建立关系用户信息和用户之间的关系:

技术分享

这是从User到UserInfo之间的关联。至于旁边

技术分享

这里稍微解释下意思:

Name: 名称

Properties: Transient临时关系,暂时没理解。 Optional可选的,意思是有User不一定有UserInfo

Destination: 目标表

Inverse: 反向关系,这个看完下面就知道了

Delete Rule: 删除规则 

  Cascade:删除User就删除UserInfo

  Deny:如果有UserInfo就不能删除User

  Nullify: User和UserInfo都不删除,只是删除他们之间的关联

  No Action: 呵呵

Type: 1:1 1:n,你懂的

 

接下来是反向关联

技术分享

 

这里Inverse和上面Inverse相对应,秒懂~


然后就是重新生成代码 & Run

技术分享

 

接着,更新我们控制器代码,如果不晓得代码,可以查看我上一篇博客  传送门

 1 - (void)insertToDB:(NSString *)username password:(NSString *)password
 2 {
 3     User *u = (User *)[NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.cdContext];
 4     u.username = username;
 5     u.password = password;
 6     
 7     UserInfo *info = (UserInfo *)[NSEntityDescription insertNewObjectForEntityForName:@"UserInfo" inManagedObjectContext:self.cdContext];
 8     info.age = @12;
 9     info.sex = @1;
10     info.address = @"中国";
11     
12     u.userInfo = info;
13     info.user = u;
14     
15     
16     NSError *err;
17     if(![self.cdContext save:&err])
18     {
19         NSLog(@"Error %@  %@",err.localizedDescription,err.localizedFailureReason);
20     }
21 
22 }
23 
24 - (void)readFromDb
25 {
26     NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
27     NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.cdContext];
28     [fetch setEntity:entity];
29     //限制只取1条
30     [fetch setFetchLimit:1];
31     NSError* err;
32     NSArray *results = [self.cdContext executeFetchRequest:fetch error:&err];
33     if(err)
34     {
35         NSLog(@"Error %@  %@",err.localizedDescription,err.localizedFailureReason);
36         return;
37     }
38     [results enumerateObjectsUsingBlock:^(User  *_Nonnull user, NSUInteger idx, BOOL * _Nonnull stop) {
39         NSLog(@"----username:%@  password:%@ address:%@",user.username,user.password,user.userInfo.address);
40     }];
41 }

 

Run and see ~

技术分享

 

本篇博客结束,后续嘛,肯定有的,目前只是浅显的介绍下~

 

iOS CoreData 开发之数据模型关系

原文:http://www.cnblogs.com/wws19125/p/5191218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!