【问题标题】:Using expandable headerview in Swift3在 Swift 3 中使用可扩展的标题视图
【发布时间】:2018-04-30 00:29:18
【问题描述】:

我已经尝试了几次,但没有成功。我使用 Swift3 使其可扩展,并且可以获取 JSON 数据,但是在将数据解析为仅显示一个的可扩展表视图时。这是我使用的编码:

这里是 JSON:

"project": [
        {
            "bu_name": "IT and Digital Ecosystem Solution Delivery",
            "project_list": [
                {
                    "project_id": 8791520,
                    "project_name": "MobApps Radio"
                }
            ]
        },
        {
            "bu_name": "Business Solution, Delivery & MO",
            "project_list": [
                {
                    "project_id": 8791392,
                    "project_name": "Research and Development Hololens (Augmented Virtual Reality)"
                },
                {
                    "project_id": 8790857,
                    "project_name": "Application Development for Probis Digital Service”
                },
                {
                    "project_id": 8436483,
                    "project_name": "Non Project - Application DMO"
                },
                {
                    "project_id": 8179950,
                    "project_name": "Release Quality Improvement"
                },
                {
                    "project_id": 7548089,
                    "project_name": "Application Development"                }
            ]
        }
    ]

这里编码获取JSON数据:

var perfArrProjectId = [String]()
var perfArrProjectName = [String]()
var namabu = ""

    if let itemProject = jsonData?["project"] as? NSArray {
        for i in 0..<itemProject.count {
            if let obj = itemProject[i] as? NSDictionary {
               let stringBU = obj.makeIterator().next()
                namabu = stringBU?.value as! String
                print("BU Name: \(namabu)")
                                        
                let buName2 = obj["bu_name"] as! String                     
                 perfArrBuName.append(buName2)
                                        
                 guard let projectList = obj["project_list"] as? [[String: Any]] else {return}
                                        
                 for list in projectList {
                     let projectId = list["project_id"] as! Int
                     let projectName = list["project_name"] as! String
                                            
                                            
                     perfArrProjectId.append(String(projectId))
                      perfArrProjectName.append(projectName)
    
                    print("_Project ID: \(projectId) \n_Project Name: \(projectName) \n”)
    
                        listPerformances = [
ModelPerformances(bussines: namaBU, projectid: perfArrProjectId, projectName: perfArrProjectName expand: false)
]
                        
                      }
                  }
             }
        }

这里输出:

BU Name: IT and Digital Solution Delivery
__Project ID: 8791520 
__Project Name: MobApps Radio 

BU Name: Business Solution, Delivery & MO
__Project ID: 8791392 
__Project Name: Research and Development (Augmented Virtual Reality) 

__Project ID: 8790857 
__Project Name: Application Development for Digital 

__Project ID: 8436483 
__Project Name: Non Project - Application DMO

__Project ID: 8179950 
__Project Name: Release Quality Improvement Program 

__Project ID: 7548089 
__Project Name: Application Development 

【问题讨论】:

    标签: ios json swift3


    【解决方案1】:

    我认为你的问题,你不知道你有多少子菜单项。

    改变它们

     perfArrProjectId.append(String(projectId))
     perfArrProjectName.append(projectName)
    

     perfArrProjectId[[String]]
     perfArrProjectName[[String]]
    
     inside the first for
    
     perfArrProjectId.append([String]())
     perfArrProjectName.append([String]())
    
     second for
    
     perfArrProjectId[i].append(String(projectId))
     perfArrProjectName[i].append(projectName)
    

    【讨论】:

    • 我在您编码时已更改,但出现致命错误:索引超出范围且错误位于 perfArrProjectName [i] .append (projectName)
    • 这里模型:类 ModelPerformances { var bussines: String var projectId: [String] var projectName: [String] var expand: Bool init(bussines: String, projectId: [String], projectName: [String ],展开:布尔) { self.bussines = bussines self.projectId = projectId self.projectName = projectName self.expand = expand } }
    • 我也改变了 listPerformances = [ ModelPerformances(bussines: namabu, project: perfArrProjectName[i], progress: perfArrProjectComplete[i], status: perfArrProjectStatus[i], expand: false) ]
    • 感谢回答,但我试过了,结果还是一样
    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 2021-04-04
    • 1970-01-01
    • 2016-05-21
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多