Core data 如何知道NSPredicate中抽象实体的类类型?

Core data 如何知道NSPredicate中抽象实体的类类型?,core-data,ios5,nspredicate,nsfetchrequest,Core Data,Ios5,Nspredicate,Nsfetchrequest,使用核心数据,我想获取一些数据。我的模型使用了一些抽象实体,见附图,其中QuantifiedGredient是一个抽象类。 我想获取至少有一个量化成分的成分实体,但中间是量化成分,这是一个抽象类。 我如何才能做到这一点,如何在NSPredicate中测试抽象类的实际类型?有什么想法或建议吗 我发现的唯一线索是: 是否会在我的QuantifiedGredient中使用自定义属性以了解它是否是RecipeQuantifiedCredit?例如,是否需要量化 非常感谢您的帮助。如果RecipeQu

使用核心数据,我想获取一些数据。我的模型使用了一些抽象实体,见附图,其中QuantifiedGredient是一个抽象类。 我想获取至少有一个量化成分的成分实体,但中间是量化成分,这是一个抽象类。

我如何才能做到这一点,如何在NSPredicate中测试抽象类的实际类型?有什么想法或建议吗

我发现的唯一线索是:

是否会在我的QuantifiedGredient中使用自定义属性以了解它是否是RecipeQuantifiedCredit?例如,是否需要量化


非常感谢您的帮助。

如果
RecipeQuantifiedingCredit
中需要
配方
,您可以尝试提取,检查是否有
配料。配方
。我想,这会管用的


自定义属性作为一种标志也适用于您。无论何时添加或删除所有的
RecipeQuantifiedingCredit

我不想花时间将其转换为CoreData speak,因此以下是我在SQL中的想法:

SELECT * FROM quantifiedIngredients WHERE recipe <> NULL
这当然需要CoreData来枚举所有量化的变量,但我认为无论如何都必须这样做,
返回nil
应该优化为微小的代码。另一个考虑因素是,这是否会对代码的其余部分产生不良影响;你必须打那个电话

当我完成这篇文章时,我突然想到的另一个想法是做类似的事情(我现在对我的伪代码非常放松):

明白我的意思吗?我忘记了CoreData是否允许您在使用谓词或FetchedThinGamabobber时使用某种游标,如果它允许的话,我认为这是您的最佳选择。无论如何,今天是星期天下午,所以这些东西留给读者作为练习


+1问一个好问题。

实际问题是是否可以处理NSPredicate的继承。我已经考虑过添加一个标志,但是从建模的角度来看,这是一个令人讨厌的解决方案,尽管可能是一个解决办法。无论如何,谢谢。问题是SQL使用实体关系模型,其中没有继承或多对多关系。因此,在SQL级别工作毫无意义,因为核心数据使用对象模型(具有继承和多对多关系)。所以,你所说的就像在C++中创建一个程序,在汇编程序中做一些修改(当然不是很重)。你对AdvestSoistRealter的说法是什么,我在寻找什么,似乎有什么叫CaseNeXT,但是它不适用于SQL PersPersStor,但是它与其他人一起工作。这很奇怪。除了className或respondsToSelector之外,还有铸造吗?一周前我给苹果发了一封电子邮件,他们告诉我他们必须对此进行研究(这是一个付费问题)。你没有答案,但你所说的非常有趣。非常感谢。我忘了说您使用KVO的解决方案不起作用。编译时,它表示抽象类在SQL中没有具有该名称的属性。谢谢你的解决方案。我已经考虑过了,试过了。好吧,里卡多,只是不要睡太多!
@interface GroceryQuantifiedIngredients (KVOHack)
-(id)recipe;
@end

@implementation GroceryQuantifiedIngredients (KVOHack)
-(id) recipe { return nil; }
@end
SELECT * FROM quantifiedIngredients WHERE [i respondsToSelector:@selector(recipe)];