查找来自特定类型的 object 的 parent
Finding the parent of an object that is from a certain type
我有一个 Object class 具有以下属性:
- 名字
- 类型
- child仁
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 Light
和Horns
是Prototype 1
的child人。
Wheel
是 Prototype 2
的 child
Prototype 1
和2
是Project 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
我有一个 Object class 具有以下属性:
- 名字
- 类型
- child仁
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 Light
和Horns
是Prototype 1
的child人。
Wheel
是 Prototype 2
的 child
Prototype 1
和2
是Project 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