当我使用特定部门 ID 时,我想要所有员工姓名

Posted

技术标签:

【中文标题】当我使用特定部门 ID 时,我想要所有员工姓名【英文标题】:I want all the employee names when i used a particular department id 【发布时间】:2018-03-13 12:59:42 【问题描述】:

当我选择特定部门(名称)并使用该部门名称(获取他们的部门 ID)并使用该 ID 搜索所有员工数据或所有员工数据时,我正在使用此代码保存所有员工数据类似于将部门ID保存到数组中并打印出来。 但是当我使用该代码时,它会打印员工 id nil 并打印所有员工姓名(对于所有部门 id)

API data

if let deptt = dictData["departments"] as? [Any] 

                print(deptt)

                for i in deptt as! [[String : Any]]
                
                    let depttName = i["name"] as? String
                    let depttID = i["id"] as? String
                    //print(i["name"]!)

                    if depttName == selectedDeptt
                    
                        let emp = dictData["employees"] as? [Any]

                        for j in emp as! [[String : Any]]
                        
                            let empID = j["department_id"] as? String
                            let empName = j["name"] as? String

                            print("Employee ID is : \(String(describing: empID))")

                            if depttID == empID
                            
                                print("Employee ID is : \(String(describing: empID))")
                                print("Employee Names : \(String(describing: empName))")
                                arrEmp.append(empName!)
                            
                        
                    
                

【问题讨论】:

let deptPredicate = NSPredicate(format: "department_id == %@", "4") let filteredArray = (arrayofDictionary as NSArray).filteredArrayUsingPredicate(deptPredicate) let names = arrayOfDictionary.filter( $0['department_id'] == 2 ).map( $0['name'] if let employees = dict["employees"] as? [[String:Any]]let employees4 = employees.filter(($0["department_id"] as? Int) == 4).map$0["name"] 可以解决问题。现在您可能仍想告诉我们您尝试了什么,我建议使用自定义对象序列化您的 JSON 与 Employee 类,以使其更容易。 【参考方案1】:

// 考虑一个字典,键为“Employee”,值类型为 [Employee]

let dict = ["Employees":[Employee(deptId:"4",id: "2", name: "Naman"),Employee(deptId:"3",id: "3", name: "Ayush Agrawal"),Employee(deptId:"4",id: "5", name: "Manish")]]

//获取员工数组

let employeeArray = dict["Employees"]

//设置部门id

let deptId = "4"

//根据deptId应用过滤器

let filteredArray = employeeArray?.filter( (emp) -> Bool in
    emp.deptId == deptId
)

【讨论】:

以上是关于当我使用特定部门 ID 时,我想要所有员工姓名的主要内容,如果未能解决你的问题,请参考以下文章

在一个部门的所有项目中工作的员工

从多个表中获取数据

Leetcode No.185 部门工资前三高的所有员工

子查询

Oracle APEX Application Builder:搜索特定员工并在硬编码文本字段中返回他们的姓名、薪水和部门

复杂查询