自引用实体,命令与NSFetchedResultsController的父子关系

时间:2015-10-23 21:40:09

标签: swift core-data nsfetchedresultscontroller nssortdescriptor

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

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

这甚至可能吗?我应该以不同方式存储和计算订单密钥,以便我可以按顺序排列吗?

我几天来一直在讨论这个问题,欢迎任何建议:o)

1 个答案:

答案 0 :(得分:1)

是的,你应该。就目前而言,要使用FRC,您需要一种方法来订购所有实体实例,但不能使用关系顺序。您可以通过以下方式执行此操作:

  1. 添加子项时,请获取其父订单
  2. 得到孩子的兄弟姐妹数 3将孩子的订单设置为'parent.siblings'
  3. 所以你将拥有一个层次结构,并订购如下:

    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
    

    您可以通过计算顺序中的点数来判断深度,但最好将深度数存储在子项上,或者至少将该深度存储为瞬态并通过计算父项来计算它。