Ric*_*rdo 9 core-data nspredicate nsfetchrequest ios5
使用核心数据我想获取一些数据.我的模型使用了一些抽象实体,参见附图,其中QuantifiedIngredient是一个抽象类.我想获取至少有一个RecipeQuantifiedIngredients的Ingredient实体,但中间是QuantifiedIngredient,这是一个抽象类.
我该怎么做,如何在NSPredicate中测试抽象类的实际类型?有什么想法或建议吗?

我发现的唯一线索是: 如何在谓词中引用父实体的获取请求中的子实体名称?
可以在我的QuantifiedIngredient中使用自定义属性来知道它是否是RecipeQuantifiedIngredient?例如isRecipeQuantifiedIngredient?
非常感谢你的帮助.
我不想花时间将其翻译成 CoreData 语言,所以这是我在 SQL 中的想法:
SELECT * FROM quantifiedIngredients WHERE recipe <> NULL
Run Code Online (Sandbox Code Playgroud)
或类似的东西。这本质上是 Nikita 关于使用标志的建议,只不过“标志”是属性的存在。我不知道CoreData在面对GroceryQuantifiedIngredients没有的情况下会如何反应recipe,我认为KVO会抛出异常。您可能会大胆地添加一个类别:
@interface GroceryQuantifiedIngredients (KVOHack)
-(id)recipe;
@end
@implementation GroceryQuantifiedIngredients (KVOHack)
-(id) recipe { return nil; }
@end
Run Code Online (Sandbox Code Playgroud)
这当然需要 CoreData 枚举所有量化的成分,但我认为无论如何它都必须这样做,并且应该return nil优化为微小的代码。另一个考虑因素是这是否会对代码的其余部分产生不良影响;你必须拨打这个电话。
当我完成此操作时,我想到的另一个想法是做这样的事情(我现在对我的伪代码感到非常放松):
SELECT * FROM quantifiedIngredients WHERE [i respondsToSelector:@selector(recipe)];
Run Code Online (Sandbox Code Playgroud)
明白了吗?我忘记了 CoreData 是否允许您在使用谓词或 fetchedThingamabobbers 时使用某种游标,如果可以,我认为这是您最好的选择。不管怎样,现在是周日下午,所以这些东西就留给读者作为练习。
一个好问题+1。
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |