NSPredicate 中的相关 NSManagedObject
Posted
技术标签:
【中文标题】NSPredicate 中的相关 NSManagedObject【英文标题】:Related NSManagedObject in NSPredicate 【发布时间】:2014-03-02 12:04:46 【问题描述】:在我的NSFetchedResultsController
中,我想要一个NSPredicate
,它只获取具有特定关系的对象。
例如:
我有三个子类NSManagedObject
s:Flight
、Aircraft
、Battery
。
每个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 和 NSFetchedResultsController 检索