【问题标题】:Self Referencing Entity, order to parent-child relationship with NSFetchedResultsController自引用实体,顺序与 NSFetchedResultsController 的父子关系
【发布时间】:2015-10-23 21:40:08
【问题描述】:

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

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)

【问题讨论】:

    标签: swift core-data nsfetchedresultscontroller nssortdescriptor


    【解决方案1】:

    是的,你应该这样做。就目前而言,要使用 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
    

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

    【讨论】:

    • 谢谢。我想为未来的人添加,最好遵循此方法并将订单存储为字符串。不幸的是,FRC 无法对这么复杂的东西进行排序。
    猜你喜欢
    • 2012-04-14
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多