我创建了一个类Person.人员包含姓名和电子邮件等属性.两者都来自类型String.
除了Person类之外,我还有一个Student继承自超类的子类Person.子类Student包含学生编号(String)和isGraduated(Boolean)等属性.
我班上有一大群人Person,比如:
var persons: [Person]()
在我在数组人员中创建Person和Student对象后,我使用a读出它们UITableView.两种型号都将在细胞中打印.但是当我想从所选行检查isGraduated的值时,自动完成不会给我属性的值:persons.isGraduated.
这个问题的第一个想法是,我的persons数组是否也包含子类Student?我的第二个想法是,我认为我不应该检查TableView中的值isGraduated.我希望这个功能是它会做一些事情,比如如果这个人毕业就打电话给原生相机.
期待解决方案.
树选项在这里
答:将数组类型更改为Student
var students: [Student]()
Run Code Online (Sandbox Code Playgroud)
B:将人员阵列中的每个元素投射到学生.理想情况下,每个人都在里面.
guard let student = person as? Student else{
return // or continue if inside a for loop
}
Run Code Online (Sandbox Code Playgroud)
然后你将有权访问该学生变量.
C:或者如果他们可能同时是阵列中的学生和人
for person in persons{
switch person{
case let student as Student: //student case
//do something
default: //person case
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |