首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >包含关系中的对象的NSFetchedResultsController

包含关系中的对象的NSFetchedResultsController
EN

Stack Overflow用户
提问于 2013-09-01 17:21:17
回答 3查看 4K关注 0票数 5

我有一个包含相关对象的NSManagedObject。这种关系由keyPath描述。

现在,我想在表视图中显示这些相关对象。当然,我可以只将具有这些对象的NSSet作为数据源,但我更喜欢使用NSFetchedResultsController重新获取对象,以便从其特性中受益。

如何创建描述这些对象的谓词?

EN

回答 3

Stack Overflow用户

发布于 2013-09-01 18:19:54

要使用fetched results控制器显示给定对象的相关对象,您可以在谓词中使用反向关系。例如:

要显示与给定父项相关的子项,请使用带有以下fetch请求的fetched results控制器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Parent *theParent = ...;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Child"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"parent = %@", theParent];
[request setPredicate:predicate];

对于嵌套关系,只需按相反顺序使用反向关系即可。示例:

要显示给定国家的街道,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Country *theCountry = ...;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Street"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"city.country = %@", theCountry];
[request setPredicate:predicate];
票数 13
EN

Stack Overflow用户

发布于 2013-09-01 19:09:55

谢谢马丁,你给了我重要的信息。

为了获得关键路径,我找到了以下实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // assume to have a valid key path and object
    NSString *keyPath;
    NSManagedObject *myObject;

    NSArray *keys = [keyPath componentsSeparatedByString:@"."];
    NSEntityDescription *entity = myObject.entity;
    NSMutableArray *inverseKeys = [NSMutableArray arrayWithCapacity:keys.count];
    // for the predicate we will need to know if we're dealing with a to-many-relation
    BOOL isToMany = NO;
    for (NSString *key in keys) {
        NSRelationshipDescription *inverseRelation = [[[entity relationshipsByName] valueForKey:key] inverseRelationship];
        // to-many on multiple hops is not supported.
        if (isToMany) {
            NSLog(@"ERROR: Cannot create a valid inverse relation for: %@. Hint: to-many on multiple hops is not supported.", keyPath);
            return nil;
        }
        isToMany = inverseRelation.isToMany;
        NSString *inverseKey = [inverseRelation name];
        [inverseKeys insertObject:inverseKey atIndex:0];
    }
    NSString *inverseKeyPath = [inverseKeys componentsJoinedByString:@"."];
    // now I can construct the predicate
    if (isToMany) {
        predicate = [NSPredicate predicateWithFormat:@"ANY %K = %@", inverseKeyPath, self.dataObject];
    }
    else {
        predicate = [NSPredicate predicateWithFormat:@"%K = %@", inverseKeyPath, self.dataObject];
    }

更新:我更改了谓词格式,以便它也支持多对多关系。

更新2这变得越来越复杂:我需要检查我的逆关系是否为to -并使用不同的谓词。我更新了上面的代码示例。

票数 1
EN

Stack Overflow用户

发布于 2014-07-04 17:47:16

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"city.country = '%@'", theCountry];

在predicateWithFormat字符串中遗漏了‘’。现在它起作用了。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18560936

复制
相关文章
面向对象设计中类的关系
所谓的设计正是采用恰当的方式组织类关。因此谈设计我认为首先要从类之间的关系开始说起.
進无尽
2018/09/12
1.5K0
面向对象设计中类的关系
java中类与对象的关系与区别
参考博客:https://blog.csdn.net/scbiaosdo/article/details/79912037
用户7886150
2021/04/20
8000
类和对象的关系
类和对象的关系 点击查看视频讲解 类是抽象的概念,表示的是同一类事物共同的属性和行为; 事物的属性使用类中的成员变量表示,事物的行为使用类中的函数表示; 对象是根据类的描述在堆内存中开辟的一块空间,表示的是一个具体的事物; 对象是根据类创建的,先有类,后有对象。类是抽象的,对象是具体的;
疯狂的线程
2019/04/20
1K0
类和对象的关系
面向对象编程:对象之间的关系类型
介绍 对象之间的关系定义了这些对象如何交互或协作来执行应用程序中的操作。在应用程序中,用户界面类的对象都与业务层对象交互,以执行操作。在后台,业务层对象可能与职责库对象交互,而职责库的对象又与数据源对象或服务对象进行交互。 案例研究 在继续之前,让我们假定一个客户订单管理应用程序,该应用程序管理客户为某些产品下的订单。每个订单可以有一个或多个产品。第一步是从给定的描述中挑选出独立的类。使用单一责任原则可以派生以下类。 Customer -表示可以为任何产品下订单的客户 Address—表示客户的地址或订单的
程序你好
2018/07/20
1.5K0
Hibernate的核心对象关系映射
Hibernate的核心就是对象关系映射: 加载映射文件的两种方式:   第一种:<mapping resource="com/bie/lesson02/crud/po/employee.hbm.
别先生
2018/01/02
1.9K0
Hibernate的核心对象关系映射
c++中对象和类的关系_类的对象只能访问该类的私有成员
类是对于某一类对象的一个统称,类是对象的抽象化,对象是类的实例。定义一个类时,相当于定义了一个数据类型的蓝图。但实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作,就是单纯的进行了一个定义。
全栈程序员站长
2022/11/01
1.7K0
Drools规则引擎-如果判断某个对象中的集合是否包含指定的值
在实际生产过程中,有很多关于集合的处理场景,比如一个Fact对象中包含有一个集合,而需要判断该集合是否包含某个值。而Drools规则引擎也提供了多种处理方式,比如通过from、contains、exists等进行操作,比较。
程序新视界
2019/08/14
2.6K0
shell 字符串包含关系
hello world include he hello world not include world 
阳光岛主
2019/02/19
2.5K0
Java-类与对象的关系
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物. 动物、植物、手机、电脑...... Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为 ​ 对象是抽象概念的具体实例 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念. 重要:一个类即使什么也不写,也是一个方法 示例代码: Student类【方法】 //学生类 public class S
白衣少年
2022/12/26
3140
Java-类与对象的关系
说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系
本文探究 fiber、DOM、ReactElement、类组件实例对象之间的引用关系。
前端西瓜哥
2022/12/21
1.4K0
说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系
Python面向对象(类之间的关系)
        执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.
py3study
2020/01/20
5440
对象,类和接口之间的关系
类是对的类型,类是具有相同属性和方法的一组集合,一个类可以对应多个对象,对象通过他们公开的方法来定义他们与外界的交互行为,而方法就形成了与外界交互的接口
子舒
2022/06/09
1.3K0
对象,类和接口之间的关系
Map.containsKey方法——判断Map集合对象中是否包含指定的键名
本示例首先使用HashMap类创建Map集合对象,并向集合中添加几个元素,然后调用containsKey方法查询是否包含指定的键名。
故久
2019/09/29
4.1K0
数据库中关系代数中的关系运算
这个概念的描述的非常抽象,刚开始学习的同学完全不知所云。这里通过一个实例来说明除法运算的求解过程:
大黄大黄大黄
2018/09/14
3.7K0
数据库中关系代数中的关系运算
对象的继承关系在数据库中的实现方式和PowerDesigner设计
在面向对象的编程中,使用对象的继承是一个非常普遍的做法,但是在关系数据库管理系统RDBMS中,使用的是外键表示实体(表)之间的关系,那么对于继承关系,该怎么在RDBMS中表示呢?一般来说有3种实现方式:
深蓝studyzy
2022/06/16
8110
对象的继承关系在数据库中的实现方式和PowerDesigner设计
【说站】javascript函数和对象的关系
javascript函数和对象的关系 说明 1、对象是通过函数创建的,对象是若干属性的集合,一切引用类型都是对象。 2、每个函数都有一个属性prototype,其属性值是一个对象。 默认只有一个叫constructor的属性,指向这个函数本身。 实例 var obj = {name: 'zs', age: 20}; //等价于 var obj = new Object(); obj.name = 'zs'; obj.age = 20; 拓展 原型对象和对象的关系 在JavaScript中,对象由一组或多
很酷的站长
2022/11/24
4970
【说站】javascript函数和对象的关系
js对象和原型、原型链的关系
JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到问题靠“猜”,却不理解它的规则!
hellocoder2029
2022/10/21
1.5K0
关于讨论对象存储与CDN的关系
作为一名刚刚了解对象存储的朋友来说,往往会产生疑问,CDN是什么?CDN跟对象存储有什么关系呢?、
用户2551353
2022/12/07
2K1
helm中的依赖关系
Helm是一个作用于k8s的包管理工具。类似于其它的包管理工具如apt/yum ,应用开发者可以管理应用包chart之间的依赖关系,以便于部署复杂的k8s应用。
用户8851924
2022/11/15
2.8K0
将包含时间戳的对象数组按天排序
示例对象数组如下,每个对象中都有一个时间戳,现在要求将每个对象按照其中的时间戳对应的天数进行排列,如何实现?
Daotin
2019/12/18
3.8K0

相似问题

删除关系对象时更新NSFetchedResultsController对象

13

NSFetchedResultsController总是包含临时对象

11

使用NSFetchedResultsController返回具有有序关系的对象

14

用NSFetchedResultsController获取具有关系的对象

13

NSFetchedResultsController,NSPredicate用于检索多个关系中的子对象。

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文