所以我有一个自引用,一对多的关系,标签:
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,您需要一个方法来排序所有实体实例,但是您不能使用关系排序。你可以这样做:
- 当你添加一个子目录时,获取它的父目录
- 获取孩子的兄弟姐妹数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
你可以通过计算点的数量来判断深度,但是最好将深度数字存储在子节点上,或者至少将深度存储为一个瞬时值,然后通过计算父节点来计算深度。