Ios 核心数据父实体

Ios 核心数据父实体,ios,cocoa-touch,core-data,Ios,Cocoa Touch,Core Data,我有一个抽象实体A,我还有两个实体,它们的父实体是实体A。 每个子对象与其他实体具有不同的关系 我正在尝试获取实体A的所有子实体,其isPublic布尔值为YES 过去我在获取子类实体时遇到过与获取相关的问题,我确信我做得不对 例如,我们可以说: •实体A是“文件”, •实体B是“诗”, •实体C为“物品” 所有诗歌和文章都是document的子类,document有一个名为isBookmarked的属性,用户可以为诗歌或文章添加书签,我需要一种获取所有添加书签的文档的方法。实体B和C需要独立,

我有一个抽象实体A,我还有两个实体,它们的父实体是实体A。 每个子对象与其他实体具有不同的关系

我正在尝试获取实体A的所有子实体,其isPublic布尔值为YES

过去我在获取子类实体时遇到过与获取相关的问题,我确信我做得不对

例如,我们可以说: •实体A是“文件”, •实体B是“诗”, •实体C为“物品”

所有诗歌和文章都是document的子类,document有一个名为isBookmarked的属性,用户可以为诗歌或文章添加书签,我需要一种获取所有添加书签的文档的方法。实体B和C需要独立,因为它们拥有其他关系

我想使用NSFetchedResultsController获得最佳的核心数据和UITableView性能,我正在努力获取诗歌和文章的混合

什么样的请求能给我诗歌和文章的混合


像这样简单的东西怎么样(假设isbookmarketd是一个布尔值):

之后,您将检查提取了哪个子类:

for (NSManagedObject *obj in results)
{ 
    if ([obj isKindOfClass:[Poem class]])
    {
        // do whatever
    }
    else if ([obj isKindOfClass:[Article class]])
    {
        // do whatever
    }
}
(或者,如果几个子类MOs实现相同的方法,则执行
respondsToSelector:
测试可能更有效。)


那不行吗?

如果你只是加上

[request setIncludesSubentities:YES];

否则,您只会收到实体的结果,正如您所说的那个样,实体应该是非抽象的。

虽然子类化NSManagedObject是常规的,但我从来并没有听说过依次子类化那个实体——至少在我有限的经验中并没有听说过。你真的需要这么做吗?难道你不能有一个实体文档,用一个属性来标识文档的类型(比如一个int,1表示文章,2表示诗歌,3表示小说,等等)和一个与其他文档的多对多关系,表示书签吗?然后,fetchRequest谓词可以指定每个int属性需要哪种类型的文档。是的,我需要一个单独的实体,因为我与每个子实体都有关系,例如注释可以引用用户,但文章可能引用新机构,而不是作者。。。举个例子好吧,这里有一篇帖子建议可以这样做,并附有一些提示:[.不完全是NSFetchedResultsController,但这就是方法。使用NSManagedObject的父类创建fetchRequest没有问题。即使是抽象的父类也应该这样做。嘿,谢谢。我可能不应该插嘴这个问题,但多亏了更有经验的海报,我现在知道如何使用抽象MOs。(对不起,大牛,把水弄脏了。)@Daniel这绝对是正确的答案,应该被接受。
[request setIncludesSubentities:YES];