首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有零值的核心数据获取和排序

具有零值的核心数据获取和排序
EN

Stack Overflow用户
提问于 2013-11-02 10:41:07
回答 1查看 290关注 0票数 0

我面临一个使用核心数据的问题。

在我的核心数据模型中,我有Grove实体和Tree实体,GroveTree之间有一对多的关系,TreeGrove之间有一对一的关系(每棵树可能在一个小树丛中)。

但有些Tree可能是“野生”的,而不是任何Grove的一部分。

我试图使用fetResultController在表视图中显示我的所有树。每个Grove都是表视图的一个部分,而“野生”树必须位于一个单独的部分。

我的代码是这样的:

代码语言:javascript
复制
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Tree" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];

    // Edit the sort key as appropriate.
    NSSortDescriptor *sectionSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Grove.name" ascending:YES];
    NSSortDescriptor *rowSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"type" ascending:YES];
    NSArray *sortDescriptors = @[sectionSortDescriptor, rowSortDescriptor];
    [fetchRequest setSortDescriptors:sortDescriptors];

    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:@"Grove.name" cacheName:nil];

如你所见,我把所有的树都取走了。第一个排序描述符(用于确定节)是基于从树到树的一对一关系,并查找树林名称。第二个排序描述符用于对给定节中的树进行排序,并按类型对它们进行排序。

当树定义了一个小树林时,这段代码工作得非常好。但是使用grove=nil的树不会被这个请求所获取。你知道如何实现通缉的行为吗?我必须为野生树木创造一个假树林吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-02 16:12:46

我建议创建一个表示“无”的特殊Grove实例,正如您所建议的那样。

另一种解决方案是从表视图数据源方法中获取这些数据并操作它们,如下所示:

  • 返回结果+1的数目作为节数。野树的最后一段。
  • 根据返回的grove实体配置节标头。
  • 返回theGrove.trees.count作为节中的行数,为最后一节的其他树进行特殊提取。
  • 等等。

你明白要点了。它稍微复杂一些,而且非标准地使用了获取的结果控制器,但是我以前已经很好地使用了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19741072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档