设置提取搜索SuperClass?

时间:2011-09-07 21:33:06

标签: iphone objective-c core-data nspredicate nsmanagedobject

我有一个NSFetch,可以在Superclass中搜索对象,它可以正常工作。有4个子类。我想让它搜索4个子类中的3个。如果没有应用内购买,则无法在应用中显示4个子类中的一个,因此我不希望通过搜索显示它。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来您正在NSFetchRequest中设置实体,并且您希望阻止某个子实体显示。我认为您最好的选择就是自己过滤获取结果,因为NSPredicate无法测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新数组,该数组仅包含第一个数组中不属于该特定子类的元素。当然,如果你将获取请求限制为一定数量的结果(例如“分页”你的数组),它会变得有点复杂。在这种情况下,您可以在假设某些对象被过滤掉的情况下获取比您需要的更多的对象,并且如果您过滤掉这么多的对象,那么您可以执行第二次获取并继续。是的,这很复杂。

另一种解决方案是在超类上存储一个布尔值,指示对象是否需要IAP,然后始终将其设置为YES一个子类,NO为其他子类。这样你就可以在NSPredicate中测试布尔值。