查找来自特定类型的 object 的 parent

Finding the parent of an object that is from a certain type

我有一个 Object class 具有以下属性:

type 包含三种可能性:汽车、船、自行车。 children 是一个数组,其中包含 object 的 children。

所以我可以有这样的记录:

name = "Project Titan"
type = "car"


name = "Prototype 1"
type = "car"


name = "Tail light"
type = "parts"


name = "Horns"
type = "parts"


name = "Prototype 2"
type = "car"


name = "Wheel"
type = "parts"

并像这样组织

            Project Titan
                   |
          ___________________
         |                   |
         |                   |
    Prototype 1          Prototype 2
         |                   |
    __________              wheel
   |          |
   Tail     horns
   light

或者换句话说

Tail LightHornsPrototype 1的child人。 WheelPrototype 2 的 child Prototype 12Project Titan的child人。

现在假设我有 object 尾灯,并且想更直接地知道它的 parent 种类车,在这种情况下将是 Prototype 1。在不烧脑的情况下最好的方法是什么?

Ok,你可以扫描和扫描结构体所有节点的children,从上往下,直到找到结构体中最近的parent up就是来自type =汽车,但是这种扫描所有结构的方法似乎是一个可怕的解决方案,特别是如果结构有数百个分支...

有什么想法吗?

支持节点双向导航的最简单方法是向 class 添加 parent 属性。要记住的重要一点是将其设为 weak 属性 以避免父项与其子项之间的引用循环。

试试这个方法。在儿童中,您将为新创建的模型命名。对于第一个 class 对象,父对象将为 nil,如果它有新的子对象,则传递父模型的引用。

@interface Model : NSObject

@property(nonatomic,strong) NSString *name;
@property(nonatomic,strong) NSString *type;
@property(nonatomic,weak) Model *children;
@property(nonatomic,weak) Model *parent;

@end