核心数据 - 通过关系对象运行

时间:2014-03-13 08:24:41

标签: ios objective-c core-data

我是核心数据新手,我有3个实体 类别有很多子类别,反过来有很多商店。 我在我的应用程序中表示它的方式是master-detail-detail表视图控制器最自然的方式。

我的问题来了,我想要一个类别,例如,如果某个条件下其子类别没有商店,则不向用户显示(例如,用户选择关闭离他太远的商店)。

在SQL中我会执行某种连接但是我不确定如何在核心数据中执行它,我基本上需要在该类别的商店上执行某种“过滤器”,如果它是空的,不是显示类别。

我目前的解决方案,我猜是坏的,是使用谓词获取类别的所有子类别,并且如果它们在所提供的条件下没有商店,如果它们都是空的,则每个子类别都运行,我没有显示该类别。

更自然的解决方案?

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的数据模型,那么使用此类谓词执行fetchRequest可以帮助您:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"subcategories.shops != nil)"];

答案 1 :(得分:0)

试试这个:

[NSPredicate predicateWithFormat:@"subcategories.shops.@COUNT != 0"];