iOS CoreData 开发之数据模型关系

接着上一篇,上一篇中,我们简单的实现了一个用户实体,本次添加一个用户信息实体,与用户实体相关联,关系为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 ~

 

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

 

posted @ 2016-02-17 09:19  无姬霸王  阅读(528)  评论(0编辑  收藏  举报