iOS 处理二叉树数据 实现多级表格
来源:互联网 发布:美国国籍 知乎 编辑:程序博客网 时间:2024/06/09 17:17
项目场景
当时项目的需求是 后台返回一个数组,我们在前端实现多级表格的效果,可以展开收缩。可以点击选择、点击取消。
后台返回的数据结构大致如下:
[ { "node":"2", "pnode":"1", "value":"value" }, { "node":"12", "pnode":"1", "value":"value" }, { "node":"25", "pnode":"12", "value":"value" }, { "node":"13", "pnode":"30", "value":"value" }, { "node":"13", "pnode":"1", "value":"value" }, { "node":"70", "pnode":"25", "value":"value" } ]
因为我们要实现多级的表格效果,所以我们必须知道哪些是父节点,父节点下有没有子节点,有多少子节点,每个子节点下又有多少子节点。
项目代码
首先我们构造我们的model:
import UIKitclass DataModel: NSObject { var cueerntId:String = "" //存储当前节点 var parentId:String = "" //存储父节点 var depth:NSInteger = 0; //当前深度 var isExp:Bool = false// 当前是否展开 var sonArr = [DataModel]();//存放所有的自己的子节点。 init(cueent:String,parent:String) { self.cueerntId = cueent self.parentId = parent } override var description: String{ get{ return "\ncurrenrt:" + self.cueerntId + "\n parent" + self.parentId + "\ndepth" + String(self.depth) + "\n子节点数量" + String(self.sonArr.count); } }}
数据处理:
func handle_data(datas:[DataModel]){ for data in datas{ data.depth += 1; for item in self.dataArr{ if(data.cueerntId == item.parentId && !data.sonArr.contains(item)) { data.sonArr.append(item) } } if(data.sonArr.count != 0){ self.handle_data(datas: data.sonArr); } } }
调用示例:
//构建数据 self.dataArr.append(DataModel(cueent: "2", parent: "1")); self.dataArr.append(DataModel(cueent: "12", parent: "1")); self.dataArr.append(DataModel(cueent: "122", parent: "12")); self.dataArr.append(DataModel(cueent: "189", parent: "122")); self.dataArr.append(DataModel(cueent: "13", parent: "1")); self.dataArr.append(DataModel(cueent: "60", parent: "13")); self.dataArr.append(DataModel(cueent: "80", parent: "13")); self.dataArr.append(DataModel(cueent: "120", parent: "12")); self.dataArr.append(DataModel(cueent: "200", parent: "120"));//数据处理self.handle_data(datas: self.dataArr);//获得最外层数组,即父节点数组 var data_sort_arr = [DataModel]() for data in self.dataArr{ if(self.isParent(model: data)){ data_sort_arr.append(data) } }//此时 data_sort_arr里面的数据即是我们的多级列表的第一层,在点击时判断 sonarr里面的有没有元素 是否展开即可。
阅读全文
0 0
- iOS 处理二叉树数据 实现多级表格
- Angular 4 多级表格,层级表格树
- 基于Bootstrap的多级表格实现
- js 处理表格数据
- 大数据表格处理
- android 多级树实现
- iOS 表格数据刷新
- iOS实现二叉树数据结构
- 实现多级下拉框联动获取数据
- 基于Swift的iOS应用程序开发:使用表格显示并控制数据(三):批量处理表格数据
- pandas处理各种表格数据
- iOS开发-UI控件:使用TableView实现多级树型menu
- 用JQUERY处理THINKPHP构造返回的多级JSON数据
- 二叉树相关算法实现-iOS
- 二叉树相关算法实现-iOS
- iOS 二叉树相关算法实现
- 二叉树相关算法实现-iOS
- (二叉树相关算法实现-iOS)
- QGC地图中2点连线
- JS——面向对象实例
- 马跳日
- 1134. Vertex Cover (25)
- "页面跳转"实例详解"SpringMVC注解"的作用与用法
- iOS 处理二叉树数据 实现多级表格
- Mybatis
- 动态规划——最优二叉查找树
- MYSQL(五)
- shell脚本中 数组的基本用法
- 面向对象-1
- Leetcode题解-5. Longest Palindromic Substring
- HDU 6208 The Dominator of Strings(字符串)
- Python网络入门