我有一个在超类中搜索对象的NSFetch,它工作得很好。有4个子类。我想让它搜索4个子类中的3个。4个子类中的一个不能在应用程序中显示,所以我不想通过搜索看到它。
有什么想法吗?
发布于 2011-09-08 05:43:33
听起来像是要在NSFetchRequest中设置实体,并且想要阻止某个子实体出现。我认为最好的办法就是自己过滤fetch结果,因为NSPredicate不能测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新的数组,其中只包含第一个数组的元素,这些元素不是那个特定子类的成员。当然,如果您将fetch请求限制为一定数量的结果(例如,“分页”您的数组),那么它将变得有点复杂。在这种情况下,假设一些对象会被过滤掉,您可以获取比所需更多的对象,如果过滤掉的对象太多,剩下的页面大小小于一个页面大小,则可以执行第二次获取并继续。是的,这很复杂。
另一种解决方案是在您的超类上存储一个布尔值,该布尔值指示对象是否需要IAP,然后总是为一个子类设置为YES,为所有其他子类设置为NO。这样,您就可以在NSPredicate中测试布尔值。
https://stackoverflow.com/questions/7340756
复制相似问题