Iphone 是否设置获取以搜索超类?
我有一个NSFetch,它在超类中搜索对象,效果很好。有4个子类。我想让它搜索4个子类中的3个。4个子类中的一个如果没有应用内购买,就无法在应用中显示,因此我不希望通过搜索看到它Iphone 是否设置获取以搜索超类?,iphone,objective-c,core-data,nspredicate,nsmanagedobject,Iphone,Objective C,Core Data,Nspredicate,Nsmanagedobject,我有一个NSFetch,它在超类中搜索对象,效果很好。有4个子类。我想让它搜索4个子类中的3个。4个子类中的一个如果没有应用内购买,就无法在应用中显示,因此我不希望通过搜索看到它 有什么想法吗?听起来像是在NSFetchRequest中设置实体,并希望阻止某个子实体出现。我认为最好的办法就是自己过滤获取结果,因为NSPredicate无法测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新数组,该数组只包含第一个数组中不属于该特定子类的元素。当然,如果您将fetch请求限制为一
有什么想法吗?听起来像是在
NSFetchRequest
中设置实体,并希望阻止某个子实体出现。我认为最好的办法就是自己过滤获取结果,因为NSPredicate无法测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新数组,该数组只包含第一个数组中不属于该特定子类的元素。当然,如果您将fetch请求限制为一定数量的结果(例如,对数组进行“分页”),那么它将变得更加复杂。在这种情况下,您可以获取比您需要的更多的对象,前提是某些对象将被过滤掉,如果您过滤掉的对象太多,以至于剩下的页面大小小于一个,那么您可以执行第二次获取并继续。是的,很复杂
另一种解决方案是在超类上存储一个布尔值,该值指示对象是否需要IAP,然后对于一个子类始终将其设置为
YES
,对于所有其他子类始终将其设置为NO
。这样,您就可以在NSPredicate
中测试布尔值,您如何测试谓词中的类?啊,我的错误,我是指获取,而不是谓词。现在我使用的是NSEntityDescription*entity=[NSEntityDescription entityForName:@“MySuperClass”inManagedObjectContext:managedObjectContext]对不起,我错误地使用了谓词而不是实体这个词。我现在的fetch中有,NSEntityDescription*entity=[NSEntityDescription entityForName:@“MySuperClass”inManagedObjectContext:managedObjectContext]但是我想让它不显示那个超类的某个子类的结果。