无法在Swift中的相同class中根据条件分配不同的变量类型

Unable to assign different variable types according to condition in same class in Swift

我需要根据这个声明变量isCandidateResult == false or true

这里isCandidateResult == falseFilterDataClass需要分配

var jobType: [String] = []    
var jobRole: String = ""

isCandidateResult == true

var jobType: String = ""   
var jobRole: [String] = []

可是我怎么办不到

代码: 为了实现我的目标,我已经尝试过这样的代码但是..使用这段代码我遇到了以下错误

 import UIKit
 var isCandidateResult: Bool = false

if isCandidateResult == false{//Error: Statements are not allowed at the top level
class FilterData {

var jobType: [String] = []    
var jobRole: String = ""

init(jobType: [String], jobRole: String) {
    self.jobType = jobType
    self.jobRole = jobRole
}
}
}
else{

class FilterData {

var jobType: String = ""   
var jobRole: [String] = []

init(jobType: String, jobRole: [String]) {
    self.jobType = jobType
    self.jobRole = jobRole
}
}
}



class FilterViewController: UIViewController {

@IBOutlet weak var filterTableView: UITableView!
@IBOutlet weak var subFilterTableView: UITableView!
@IBOutlet weak var filterTitle: UILabel!

if isCandidateResult == false{
var filterData = FilterData(jobType: [], jobRole: "")//Cannot find 'FilterData' in scope
}
elase{
var filterData = FilterData(jobType: "", jobRole: [])
}
override func viewDidLoad() {
    super.viewDidLoad()
}
}

错误: 1)

Statements are not allowed at the top level 2) Cannot find 'FilterData' in scope

不应该这样做。

相反,创建一个可以用工作类型和角色初始化的模型,或者用工作角色和类型初始化的模型,UITableView 的模型。这样,您就无需关心是工作类型和角色还是其他。您只填充模型。并让tableview管理自己的数据。它不需要知道里面是什么。

struct FilterTableViewModel {

    let title: String
    let elements: [String]

    init(jobType: String, roles: [String]) {
        title = jobType
        elements = roles
    }

    init(jobRole: String, types: [String]) {
        title = jobRole
        elements = types
    }
}

并且:

class FilterViewController: UIViewController {
    var filterData: [FilterTableViewModel] = []
}