自引用实体,与NSFetchedResultsController建立父子关系



所以我有一个自引用,一对多的关系,标签:

Tag
- Name: String
- Order: NSNumber
- SubTags: [Tag]
- ParentTag: Tag

一个标签可以有多个子标签,并且只能有一个父标签

我的目标是使用NSFetchedResultsController以这种方式在UITableView中显示它们(其中每个标签都是一个单元格,我使用空格来显示父级):

Parent Tag, order 1
 Child Tag, order 1
 Child 2 Tag order 2
Parent 2 Tag, order 2
 Child 3 Tag, order 1
 Child 4 Tag, order 2

这可能吗?我是否应该以不同的方式存储和计算顺序键,这样我就可以按顺序排列了?

我已经为此绞尽脑汁好几天了,欢迎任何建议:0)

是的,你应该。就目前而言,要使用FRC,您需要一个方法来排序所有实体实例,但是您不能使用关系排序。你可以这样做:

  1. 当你添加一个子目录时,获取它的父目录
  2. 获取孩子的兄弟姐妹数3设置孩子的顺序为"parent.siblings"

所以你会有一个层次结构和顺序,如:

Parent 1 Tag, order 1
 Child 1 Tag, order 1.1
 Child 2 Tag, order 1.2
Parent 2 Tag, order 2
 Child 3 Tag, order 2.1
 Child 4 Tag, order 2.2
  Child 5 Tag, order 2.2.1

你可以通过计算点的数量来判断深度,但是最好将深度数字存储在子节点上,或者至少将深度存储为一个瞬时值,然后通过计算父节点来计算深度。

最新更新