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 ~

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

时间: 2024-10-25 23:07:38

iOS CoreData 开发之数据模型关系的相关文章

iOS IM开发blog写作计划

很久不写blog了,做了一段时间的IM项目,期间遇到了不少的坑,我准备分模块记录一下遇到的问题. 第一模块 我准备写一下准备工作,包括以下几个:(后续可能会增加) 1.XML文件的解析2.proto buf-Objc的安装及使用3.socket的基本概念(这一篇我基本都是放链接 ^_^)4.CocoaAsyncSocket的使用(我基本还是贴链接 -_-#)5.iOS中struct怎么用(定长和不定长的都写一个例子) 第二模块 我准备写一些iOS IM开发的建议,包括以下几个:(后续可能会增加)

iOS企业级开发初级课程-表视图(13集)

首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜索栏.分组的使用.然后我们学习了如何对表视图单元格进行删除.插入.移动等操作.最后本章向大家介绍了表视图UI设计模式方面的内容. 序号 技术点 1 表视图-1-表视图介绍 2 表视图-2-简单表视图 3 表视图-3-简单表视图下 4 表视图-4-自定义单元格 5 表视图-5-搜索栏-1 6 表视图-

iOS App开发那些事:如何选择合适的人、规范和框架?

自从做Team Leader之后,身上权责发生了变化,于是让我烦恼的不再是具体某个功能,某个界面的实现,而是如何在现有代码的基础上做渐进式的改进,创造出比较合适规范和框架,使得组内成员更快更好地完成任务.一年下来,颇有点想法,于是啰嗦几句关于iOS App开发的那些事. 合适的人 首先明确一点,合适的人是指纯技术团队的建设.一支战斗力再强的技术团队,面对一个朝三暮四,分分钟推翻自己原有想法的产品经理/项目经理,再好的戏也唱不出来.花几个月加班加点做项目,还没发布,直接推翻重做,这时候你就得去楼下

使用swift语言进行IOS应用开发

在Swift中能够直接使用Objective-C语言提供的api (包括系统框架与自己的定制代码),也能够在Objective-C中使用Swift提供的类和api ,还能够在一个工程中同时混合使用Swift 和Objective-C两种语言,两种语言之间能够互通和互用. 任意Objective-C的框架或C库(包括所有的Objective-C系统框架,例如Foundation.UIKit.SpriteKit以及系统提供的公共c库)作为模块被直接导入Swift 供Swift语言使用. 例如为了使用

20个可以帮你简化iOS app开发流程的工具

这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是立刻编程,而是设计UI和创建原型,这样你才能知道app如何运行,根据用户体验需要做哪些调整. App Cooker AppCooker 不仅是一个创建原型的优秀工具,它提供的许多功能还可以帮助你将程序发布到App store中.它集成了Dropbox,Box.net和photo roll,你可以直接

WWDC 2014 Session笔记 - iOS界面开发的大一统

本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 What's New in Cocoa Touch Building Adaptive Apps with UIKit What's New in Interface Builder View Controller Advancements in iOS 8 A Look Inside Presentation Controllers iOS 8 和 OS X 10.10 中一个被强调了多次的主题就是大一统,Apple

iOS线程开发小结

/* 方法名决定是否开启新线程(async,sync),队列类型(全局队列,串行队列)决定开启多少条线程 1.快速线程调用 *开启后台线程执行任务 [self performSelectorInBackground:@selector(test) withObject:nil]; *回到主线程执行任务 [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES]; 2.GCD

web前端开发与iOS终端开发的异同[转]

* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !importan

IOS多线程开发

本文转载至 http://blog.csdn.net/davidsph/article/details/8171607 IOS的多线程,一般分为三种方式: 1,Thread;2, Cocoa operations;3, Grand Central Dispatch (GCD) (iOS4 才开始支持) 下面简单说明一下: 1:NSThread   创建方式主要有两种: [NSThread detachNewThreadSelector:@selector(myThreadMainMethod:)