获取核心数据对象,其中一对多关系包含集合中的所有对象
Posted
技术标签:
【中文标题】获取核心数据对象,其中一对多关系包含集合中的所有对象【英文标题】:Fetch core data object where to-many relationship contains all objects in a set 【发布时间】:2012-10-25 14:01:29 【问题描述】:我正在寻找一种简洁的方法来获取由其关系唯一标识的核心数据对象。例如,给定数据模型:
...给定一组NSManagedObject
节点,我想获取一个三角形,或者至少知道是否存在这样的 TriangleEntity:
NSSet *nodeSet = // a set of 3 NSManagedObject*s
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TriangleEntity"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"corners CONTAINS ALL %@", nodeSet];
我不认为CONTAINS ALL
是正确的语法——而且我知道我可以解压 NSSet 并获取
@"corners CONTAINS %@ AND corners CONTAINS %@ AND corners CONTAINS %@", setObj1, setObj2, setObj3
...但这似乎很愚蠢。有没有更优雅的解决方案?
【问题讨论】:
【参考方案1】:以下谓词查找所有角都在给定集合中的三角形:
[NSPredicate predicateWithFormat:@"ALL corners IN %@", nodeSet]
nodeSet
可以是 NSSet
或 NSArray
。
【讨论】:
漂亮。您可以指向苹果文档以供参考吗?还是这只是经验之声? @SamHatchett:“ALL”和“IN”记录在“谓词编程指南”的Predicate Format String Syntax 中。如何正确组合这些是我的经验问题。NSPredicate(format: "ALL contacts IN %@", selectedContacts)
导致控制台中出现“不支持的谓词”崩溃。 selectedContacts
是 NSManagedObjects 的 Swift 数组。这也是多对多的关系。有什么想法吗?
@hgwhittle 在这里也一样。到目前为止你有什么解决办法吗?以上是关于获取核心数据对象,其中一对多关系包含集合中的所有对象的主要内容,如果未能解决你的问题,请参考以下文章