Iphone 什么';有什么更好的方法可以与很多人建立深厚的关系?
我有三个实体:EntityA、EntityB和EntityC,它们与许多关系相关 有关详细信息,请参见架构: 为了获取依赖于EntityB.name的EntityA的所有实例,我使用如下谓词:Iphone 什么';有什么更好的方法可以与很多人建立深厚的关系?,iphone,core-data,nspredicate,Iphone,Core Data,Nspredicate,我有三个实体:EntityA、EntityB和EntityC,它们与许多关系相关 有关详细信息,请参见架构: 为了获取依赖于EntityB.name的EntityA的所有实例,我使用如下谓词: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY EntityB.name like 'SomeName'"]; 获取所有依赖于EntityC.name的EntityA实例的谓词应该是什么? 我尝试了类似于@“ANY Ent
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY EntityB.name like 'SomeName'"];
获取所有依赖于EntityC.name的EntityA实例的谓词应该是什么?
我尝试了类似于@“ANY EntityB.entitiesC.name like'SomeName'”
的查询,但出现异常“此处不允许使用多对多键”
致以最良好的祝愿
维克托当我被以下决定阻止时: 首先,我得到满足条件EntityC.name等于'SomeName'的所有EntityC
NSPredicate *p = [NSPredicate predicateWithFormat:@"name like %@", @"SomeName];
然后我从上面的查询中得到一个EntityB数组
NSArray *parentBs = [res valueForKeyPath:@"@distinctUnionOfObjects.parent"];
然后获取满足条件EntityB.EntitiesC.name等于'SomeName'的EntityB数组:
NSExpression *leftExpression = [NSExpression expressionForEvaluatedObject];
NSExpression *rightExpression = [NSExpression expressionForConstantValue:parentBs];
NSPredicate *p = [NSComparisonPredicate predicateWithLeftExpression:leftExpression rightExpression: rightExpression modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType options:0];
我对EntityA重复同样的话
此解决方案的有效性尚不确定,我仍然希望有更好的解决方案解决此问题。我的最终解决方案是使用子查询
NSPredicate *p = [NSpredicate predicateWithFormat:@"(name like %@) AND (0 != SUBQUERY(entitiesB, $x, (0 != SUBQUERY($x.entitiesC, $y, $y.name like %@).@count)).@count)", nameA, nameC];
不幸的是,我无法在nsExpression对象上展开此查询。这是否适用于Mac OS和iOS的SQLite存储?苹果文档(来自iOS 5.0库:核心数据编程指南>持久存储功能>获取谓词和排序描述符——对于Mac OS可能有所不同):“对于可用于SQLite存储的谓词,还有其他限制:您不必翻译“任意”将SQL查询转换为谓词。”
NSPredicate *p = [NSpredicate predicateWithFormat:@"(name like %@) AND (0 != SUBQUERY(entitiesB, $x, (0 != SUBQUERY($x.entitiesC, $y, $y.name like %@).@count)).@count)", nameA, nameC];