举个例子,用户表中的用户记录,其所属部门,在数据库中,引用的是部门代码,而在ui界面,用的是部门名称。这时就需要在部门代码,和部门名称间进行切换。这时映射(map)对象就出现了。
从数据库读出数据填入ui时,需要用map(code)得到部门名称;当保存数据到数据库时,又需要用到map(name)得到部门代码。
如果一个映射能双向获取,就完美了。但鸿蒙中,能双向获取的数据类型只有枚举。枚举具有固定长度的预定义类型,因此,无法根据记录集或一个数组自动生成。
这时,只能创建两个方向相反的单项映谢来实现。代码如下:
//定义映射
private c2n=new map<numher,string>
private n2c=new map<string,number>
//根据数组,创建映射
foreach(aryDepts,(Dep)=>{
c2n.set(Dep.code,Dep.name)
n2c.set(Dep.name,Dep.code)
})
//使用映射
使用的时候,ui.Text=c2n.get(code)显示名称,保存时,db.Field=n2c.get(name)写入编码。
如果长度固定,映射固定,建议用enum。