这次是表之间怎么进行关联,要求如下:

// 建立学生与班级表之间的联系
既然是表与表之间的关联,那肯定是要先创建表:

// 1.创建模型文件 (相当于一个数据库里的表)

// New File ———— CoreData ———— Data Model ———— Next

// 2.添加实体 (相当于一张表)

// 找到我们创建的模型文件(xxx.xcdatamodeld,我创建的叫School.xcdatamodeld)————Add
Entity ———— 添加表内属性(这边我添加2个属性(name,age))

//3.在此模型文件内我们再添加第二张表Classes,表内的属性(这边我添加一个属性(classname,classNo))

// 4.因为学生肯定是属于某个班级的,所以我们选择学生的表,在表中的Relationships内添加关联。


// 5.添加完关联后我们就需要创建实体了,在创建的过程中,我们会看到school内有2张表(student,classes),因为classes是没有关联任何表的(student则关联\依赖classes表),所以先创建classes实体,再创建student的实体。

// New File ———— CorData ———— NSManagedobject subclass ————Next(记得选择需要关联的表)这样就会自动生成相应的模型

// 5.1先关联classes表


// 5.2再关联student表


// 5.3生成以下相应模型

// 6.生成上下文 关联模型文件生成数据库(关联的时候,如果本地没有数据库文件,CoreData会自己创建)

// 上下文,记得引用CoreData框架

NSManagedObjectContext *context= [[NSManagedObjectContext alloc]init];

// 上下文关联数据库

// model模型文件, 参数:mergedModelFromBundles:因为模型文件是资源文件,所以会放到BUNDLES里面,所以只需要写nil就可以了。

NSManagedObjectModel *model= [NSManagedObjectModel mergedModelFromBundles:nil];

// 持久化存储调度器(持久化:把数据保存在一个文件,而不是放在内存中)

NSPersistentStoreCoordinator *store=[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];

// 告诉CoreData数据库的名字和路径

NSString *doc=
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *sqlitePath=[doc stringByAppendingPathComponent:@"School.sqlite"];

[store addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nilerror:nil];

context.persistentStoreCoordinator =store;

然后我们来测试一下

#pragma mark - 添加

- (void)addStudent

{

// 创建两个班级一班,二班

Classes*oneClass= [NSEntityDescriptioninsertNewObjectForEntityForName:@"Classes"inManagedObjectContext:_context];

oneClass.classname=
@"一班";

oneClass.classNo=
@(1.0);

Classes*twoClass= [NSEntityDescriptioninsertNewObjectForEntityForName:@"Classes"inManagedObjectContext:_context];

twoClass.classname=
@"二班";

twoClass.classNo=
@(2.0);

// 创建两个学生对象

Student*zhangsan= [NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:_context];

zhangsan.name=
@"张三";

zhangsan.age=
@(1.80);

zhangsan.classNo= oneClass;

Student*lisi= [NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:_context];

lisi.name=
@"李四";

lisi.age=
@(2.10);

lisi.classNo= twoClass;

//
直接保存数据库

[_contextsave:nil];

}

#pragma mark - 读取

- (void)readStudent

{

// 只读取二班的学生

// 1.FectchRequest
抓取请求对象

NSFetchRequest
*request= [NSFetchRequest fetchRequestWithEntityName:@"Student"];

// 2.设置过滤条件

//这边直接使用点语法就可以了

NSPredicate*pre= [NSPredicatepredicateWithFormat:@"classNo.classname=
%@",@"二班"];

request.predicate= pre;

// 4.执行请求

NSArray*stus = [_contextexecuteFetchRequest:requesterror:nil];

for(Student*stu
instus)

{

NSLog(@"名字:%@班级:%@",stu.name,stu.classNo.classname);

}

}

2015-10-29 22:09:06.519 CoreData表之间的关联[1817:76617]名字:李四班级:二班

2015-10-29 22:09:06.519 CoreData表之间的关联[1817:76617]名字:李四班级:二班

2015-10-29 22:09:06.519 CoreData表之间的关联[1817:76617]名字:李四班级:二班

好了,以上就是CoreData表之间的关联,分页等操作。会陆续更新!
DEMO下载地址:链接: http://pan.baidu.com/s/1qWtJgw0 密码: wpaa
如果哪里有错或者有什么问题可以随时联系我,转载请注明出处,谢谢!

【CoreData】表之间的关联的更多相关文章

  1. PowerDesigner如何设计表之间的关联

    PowerDesigner如何设计表之间的关联   步骤/方法 在工具箱中找到参照关系工具:   由地区表到省份表之间拉参照关系,箭头指向父表,然后双击参照关系线,打开参照关系的属性:   在这里检查 ...

  2. [MySQL数据库之表的约束条件:primary key、auto_increment、not null与default、unique、foreign key:表与表之间建立关联]

    [MySQL数据库之表的约束条件:primary key.auto_increment.not null与default.unique.foreign key:表与表之间建立关联] 表的约束条件 约束 ...

  3. mybatis中表与表之间的关联

    第三天 1.mybatis处理表与表之间的关系? 比如要在帖子回复表里显示其它两张相关联表的信息. 处理的第一种方式: 1)主要的数据实体类是ReplyInfo,相关联的实体表的数据是TitleInf ...

  4. Hibernate中表与表之间的关联多对多,级联保存,级联删除

    第一步:创建两个实体类:用户和角色实体类,多对多关系,并让两个实体类之间互相关联: 用户实体类: package com.yinfu.entity; import java.util.HashSet; ...

  5. SAP 透明表之间的关联字段

    VTTK-TPLST=TTDST-TPLST(装运点的关联表及描述表字段TTDST-BEZEI) VTTK-ROUTE=TVROT-ROUTE(装运线路关联表及描述表字段TVROT-BEZEI) VT ...

  6. Hibernate中表与表之间的关联一对多,级联保存和级联删除

    1:Hibernate的一对多操作(重点) 一对多映射配置 第一步:创建两个实体类:客户和联系人(例)以客户为一,联系人为多: package com.yinfu.entity; public cla ...

  7. CodeFirst 表之间的关联

    多重性关系可以是Optional(一个属性可拥有一个单个实例或没有) Required(一个属性必须拥有一个单个实例) Many很多的(一个属性可以拥有一个集合或一个单个实例). Has方法包括如下几 ...

  8. MySQL创表--分页--自关联--

    创建表book create table t_book( id int unsigned auto_increment primary key, bookName varchar(255) defau ...

  9. mysql中,表与表之间的关系

     """ 1.字段的修改.添加.删除 2.多表关系(外键) 3.单表详细操作:增删改,查(各种条件) """ 字段操作  create ta ...

随机推荐

  1. javascript必知必会:面象对象编程

    面象对象编程技术的核心理念:封装.继承.多态:在一些主流的高级编程语言中,比如:C#,VB.NET,JAVA,PHP等都是很容易实现的,而如果要在javascript中实现面象对象编程,可就不那么直接 ...

  2. JS魔法堂:判断节点位置关系

    一.前言 在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系,通过jQuery我们可以轻松搞定,但原生JS呢?下面我将整理各种判断方法,以供日后查阅. 二 ...

  3. CP/IP,SPDY,WebSocket 三者之间的关系

    按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议.在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议.一.HTTP的 ...

  4. MVC知识进阶01

    下面是在项目中有关于MVC的知识总结,有些地方若不对,请指出. 一:MVC的基本知识 1 名词解释    *惯例优先原则<约定大于配置>:是一种开发设计模式,说是在项目里面使用事先规定的命 ...

  5. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  6. .Net语言 APP开发平台——Smobiler学习日志:仿12306的APP登陆界面

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的”Smobil ...

  7. 一些C#实用的方法汇总

    代码如下: /// <summary> /// 过滤字符串方法,用于将单引号等特殊符号转化成中文符号 /// </summary> /// <param name=&qu ...

  8. Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin

    作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...

  9. 同样的MVC,不同的实现方法(Spring MVC .Net MVC)

    由于工作需要,最近将Net的MVC又重新好好的学习了一遍.学习教材是博客园里的大神的作品<ASP.NET MVC5框架揭秘>. <ASP.NET MVC5框架揭秘>这本书,说了 ...

  10. C#项目中常用到的设计模式

    1. 引言 一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言.但是随着项目的迭代,往往需要将很多相同功能的代码抽取出来,这也是设计模式的 ...