NSPredicate 中的相关 NSManagedObject

Posted

技术标签:

【中文标题】NSPredicate 中的相关 NSManagedObject【英文标题】:Related NSManagedObject in NSPredicate 【发布时间】:2014-03-02 12:04:46 【问题描述】:

在我的NSFetchedResultsController 中,我想要一个NSPredicate,它只获取具有特定关系的对象。

例如:

我有三个子类NSManagedObjects:FlightAircraftBattery

每个Flight 都有一个Aircraft。每个Flight 可以有多个Battery 对象。

所以当我获取Flight 对象时,这是我尝试使用谓词的方法:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"aircraft = %@", aircraftObj]];

所以我只想获取与特定Aircraft 对象相关的Flight 对象。这不起作用,但我该怎么做呢?

其次,在此基础上,Flight 具有 batteries,它是 Battery 对象的 NSSet。所以如果我想和 Aircraft 一样,但是过滤 Battery 对象,我该怎么做呢?

谢谢,如果我需要进一步解释,请告诉我。

【问题讨论】:

【参考方案1】:

您的谓词存在“双重格式化”问题。

你可以简单地写:

[NSPredicate predicateWithFormat:@"aircraft = %@", aircraftObj]

Battery 对象也是如此(但使用正确的Flight

【讨论】:

不确定我是否理解。我正在获取 Flight 对象。我手头还有一个Aircraft 对象。所以在获取过程中,我只想获取Flight 对象,其中aircraft 关系等于我拥有的Aircraft 对象。我已经按照您的建议进行了尝试,但是在创建 NSPredicate 并在日志中显示 Unable to parse the format string 时它崩溃了。 解决了!我正在使用一个 NSString ,然后将其放入谓词中。通过将其直接放入我的谓词中,它可以解决问题。但是,如果我想在谓词中添加更多内容怎么办?这就是为什么我将字符串增长到最终结果,然后设置谓词。不过谢谢! 阅读THIS 加入谓词

以上是关于NSPredicate 中的相关 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 中的相关 NSManagedObject

NSPredicate 基于此对象是不是与另一个相关?

NSPredicate 用于查询中的位置

保存核心数据相关数据并使用具有多个实体的 NSPredicate 和 NSFetchedResultsController 检索

NSPredicate 用于从一对多关系中获取项目,不包括特定的相关实体

使用 NSPredicate 遍历多个 Core Data 对象