【问题标题】:Core data - FetchedResultController returning complicated data structures?核心数据 - FetchedResultController 返回复杂的数据结构?
【发布时间】:2011-10-13 16:59:53
【问题描述】:

所以我有以下结构。基本上是一个树视图。 每个节点都有一个集合(NSSet of nodes),每个节点都是一个包含一个NSDate的对象。

-4
-1
   -3
   -2
-5
   -7
   -6
   -8

是否可以编写返回以下结果的核心数据查询(每个节点都包含有关其父节点的信息)

{1,2,3,4,5,6,7,8}

每个级别的项目应按日期排序

【问题讨论】:

  • 您真的需要使用 NSFetchedResultsController,还是愿意接受其他建议?您需要 NSFetchedResultsController 的哪些属性?
  • 我愿意接受其他建议。只要它在一棵树上表现良好,比如说 400-500 件物品,我就很高兴。我尽量避免循环

标签: iphone objective-c ios core-data nsfetchedresultscontroller


【解决方案1】:

您是否尝试过 NSSortDescriptor... 例如:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];

更多教程来自site

【讨论】:

  • 我看不出排序描述符对树的每个级别的排序有何帮助
【解决方案2】:

简答;没有。

首先,Core Data 使用对象而不是像这样的原始值。

其次,NSFetchedResultsController 旨在返回一组具有相同实体类型并可能分成多个部分的对象。您所描述的是多级结构,不符合NSFetchedResultsController 的目标。

更新

如果您只是想取回按yProperty 排序的XEntity 中的NSArray,而不考虑XEntity 中的父/子关系,那么您不需要NSFetchedResultsController。只需创建一个NSFetchedRequest 并将-setEntity: 设置为XEntity 并添加一个NSSortDescriptoryProperty 排序并针对NSManagedObjectContext 执行提取。

如果您想在该数据更改时进行更新,那么您需要使用 NSFetchedResultsController 和相同的 NSFetchRequest

【讨论】:

  • 我所有的节点都在同一个实体中,而且都是同一种类型。每个对象都有一个 parentId,它引用同一实体中的另一个对象
  • 它仍然是一个多层次的结构,即使它们是同一个实体。您可以构建一个 fetch 等来检索数据,您可以构建自己的观察者来观察变化,但 NSFetchedResultsController 不适合。它专为单级数据而设计。
  • 我认为你没有完全理解我的问题。我有一个存储在 coreData 中的树结构,但我希望 fetchedResultController 返回单级对象,但与树的顺序相同。因此,如果树有 20 行,我希望获取的结果控制器返回一个包含 20 个对象的数组。诀窍是正确排序每个项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多