Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 是否设置获取以搜索超类?_Iphone_Objective C_Core Data_Nspredicate_Nsmanagedobject - Fatal编程技术网

Iphone 是否设置获取以搜索超类?

Iphone 是否设置获取以搜索超类?,iphone,objective-c,core-data,nspredicate,nsmanagedobject,Iphone,Objective C,Core Data,Nspredicate,Nsmanagedobject,我有一个NSFetch,它在超类中搜索对象,效果很好。有4个子类。我想让它搜索4个子类中的3个。4个子类中的一个如果没有应用内购买,就无法在应用中显示,因此我不希望通过搜索看到它 有什么想法吗?听起来像是在NSFetchRequest中设置实体,并希望阻止某个子实体出现。我认为最好的办法就是自己过滤获取结果,因为NSPredicate无法测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新数组,该数组只包含第一个数组中不属于该特定子类的元素。当然,如果您将fetch请求限制为一

我有一个NSFetch,它在超类中搜索对象,效果很好。有4个子类。我想让它搜索4个子类中的3个。4个子类中的一个如果没有应用内购买,就无法在应用中显示,因此我不希望通过搜索看到它


有什么想法吗?

听起来像是在
NSFetchRequest
中设置实体,并希望阻止某个子实体出现。我认为最好的办法就是自己过滤获取结果,因为NSPredicate无法测试实体类型。一旦执行了NSFetchRequest,就可以构造一个新数组,该数组只包含第一个数组中不属于该特定子类的元素。当然,如果您将fetch请求限制为一定数量的结果(例如,对数组进行“分页”),那么它将变得更加复杂。在这种情况下,您可以获取比您需要的更多的对象,前提是某些对象将被过滤掉,如果您过滤掉的对象太多,以至于剩下的页面大小小于一个,那么您可以执行第二次获取并继续。是的,很复杂


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

中测试布尔值,您如何测试谓词中的类?啊,我的错误,我是指获取,而不是谓词。现在我使用的是
NSEntityDescription*entity=[NSEntityDescription entityForName:@“MySuperClass”inManagedObjectContext:managedObjectContext]NSEntityDescription*entity=[NSEntityDescription entityForName:@“MySuperClass”inManagedObjectContext:managedObjectContext]