1、创建示例
2、API说明
@interface NSTreeNode : NSObject
/**
* @brief 创建一个包含指定modelObject对象的新树节点
*
* @param modelObject 表示该节点的modelObject对象,可为nil
* @return 新创建的树节点
*
* @discussion 该方法创建了一个新的NSTreeNode对象,该对象的representedObject属性被设置为指定的modelObject对象。
* 使用该方法可以快速创建一个用于作为树节点的对象,并将其关联到指定的modelObject上。
* 例如,当需要将一个modelObject插入到树中时,可以使用该方法来创建一个树节点对象,并将相应的modelObject关联到该节点上。
*/
+ (instancetype)treeNodeWithRepresentedObject:(nullable id)modelObject;
/**
* @brief 创建一个包含指定modelObject对象的新树节点
*
* @param modelObject 表示该节点的modelObject对象,可为nil
* @return 新创建的树节点
*
* @discussion 该方法创建了一个新的NSTreeNode对象,该对象的representedObject属性被设置为指定的modelObject对象。
* 使用该方法可以快速创建一个用于作为树节点的对象,并将其关联到指定的modelObject上。
* 例如,当需要将一个modelObject插入到树中时,可以使用该方法来创建一个树节点对象,并将相应的modelObject关联到该节点上。
*/
- (instancetype)initWithRepresentedObject:(nullable id)modelObject;
/**
* @brief 查找指定位置下的节点,并返回该节点
*
* @param indexPath 指定位置所代表的NSIndexPath对象
* @return 该位置下的节点,如果指定位置不存在,则返回nil。
*
* @discussion 该方法会在NSTreeNode及其子节点中查找指定位置下的节点,并返回该节点。
* 例如,当需要表示一个文件系统的树结构时,可以使用该方法来查找指定的文件夹节点,并在其下创建子节点。
*/
- (nullable NSTreeNode *)descendantNodeAtIndexPath:(NSIndexPath *)indexPath;
/**
* @brief 使用指定的排序描述符对节点进行排序,可选择是否扩展到子节点
*
* @param sortDescriptors 指定的排序描述符的数组
* @param recursively 是否扩展到子节点;YES表示扩展到子节点,NO表示仅对当前节点进行排序
*
* @discussion 该方法会对节点进行排序,使用指定的排序描述符进行比较。如果设置了recursively参数,也会对子节点进行排序。
* 例如,当需要按名称对文件系统的树结构进行排序时,可以使用该方法并提供适当的排序描述符来实现。
*/
- (void)sortWithSortDescriptors:(NSArray<NSSortDescriptor *> *)sortDescriptors recursively:(BOOL)recursively;
/** 该节点所表示的对象 */
@property(nullable, readonly, strong) id representedObject;
/** 该节点在树中的路径 */
@property(readonly, strong) NSIndexPath *indexPath;
/** 该节点是否为叶节点 */
@property(getter=isLeaf, readonly) BOOL leaf;
/** 该节点的子节点数组 */
@property(nullable, readonly, copy) NSArray<NSTreeNode *> *childNodes;
/** 可变的子节点数组 */
@property(readonly, strong) NSMutableArray<NSTreeNode *> *mutableChildNodes;
/** 该节点的父节点 */
@property(nullable, readonly, weak) NSTreeNode *parentNode;
@end