也许是因为我在3天内没有睡觉,但是这个真的让我失望了。我处于早期阶段,但这是我想要做的事情,获得知道孩子的父ManagedObject
- 使用对象本身,而不是属性。
示例:
实体A:商店(属性可以是:storeName,storeAddress等... item(relationship))
实体B:项目(属性可以是:itemName,storename(重复,当项目添加到db时),store(relationship))
这些关系具有多对多关系 - 每个项目都有一个商店。但是,我可以从同一家商店或同名商店不止一次地购买同一件商品 - 例如Von's的M& M包。结果,如果我使用的话,我会得到重复:
Item *aItem = [[itemArrayController selectedObjects] objectAtIndex:0];
NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"storeName like %@", aItem.storename];
我尝试了这个和其他变化(没有成功):
NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"item like %@", Item];
错误是我不能将它用于多对多关系 - 好的,可以理解,但我可以使用什么?
是的,我可以引入一个将它们链接在一起的属性,但我试图避免这种情况。核心数据已经将这些联系在一起,应该有一种方法可以利用它。
思想?
答案 0 :(得分:1)
自Store
- > Item
是一种多对多关系,您需要找到匹配的stores
(大概)ANY item
。对此的谓词是:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY item == %@", aItem];
或者,您可以使用反向关系访问父级:
Store *myStore = [aItem valueForKey:@"store"];
或者,如果您已创建NSManagedObject
的子类,则可以使用点表示法:
Store *myStore = aItem.store;