当我使用特定部门 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 时,我想要所有员工姓名的主要内容,如果未能解决你的问题,请参考以下文章
Oracle APEX Application Builder:搜索特定员工并在硬编码文本字段中返回他们的姓名、薪水和部门