如何从结构加载 UITableView 单元格中的数据

How to load data in UITableView cell from structure

我正在尝试将数据从结构加载到 table 视图单元格,我创建了一个包含三个标签的自定义单元格。我在视图控制器中有三个文本字段和一个添加按钮,当我填充这三个文本字段并按添加时,它会将这三个值存储在一个结构中并重新加载 table 视图的数据。结构在其他文件中。

这是 DataMaster.swift

中的结构代码
struct jobData
{
    var CompanyName:Array<String> = ["ram"]
    var job:Array<String> = ["shyam"]
    var desc:Array<String> = ["dfdf"]

}

addButton 函数的代码

@IBAction func addButtonTapped(sender: AnyObject) {

        var company = txtCompName.text
        var job = txtJob.text
        var description = txtDesc.text

        data.CompanyName.append(company)
        data.desc.append(description)
        data.job.append(job)
        self.jobTableView.reloadData()
        print(data.CompanyName)
        txtCompName.resignFirstResponder()
        txtJob.resignFirstResponder()
        txtDesc.resignFirstResponder()
    }

问题出在这段代码

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell  = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as jobTableViewCell
        cell.compLabel.text = data.CompanyName[indexPath.row]
        cell.jobLabel.text = data.job[indexPath.row]
        cell.descLabel.text = data.desc[indexPath.row]
        return cell
    }

当它到达此代码以在 table 中加载数据时崩溃 Thread 1:EXC_BREAKPOINT(code=EXC_I386_BPT,subcode=0x0)

下面是代码。

struct jobData
{
    var CompanyName:String!
    var job:String!
    var desc:String!
}

取数组为var datas = [jobData]()

现在在 Action 方法中

@IBAction func addButtonTapped(sender: AnyObject) {
    var company = txtCompName.text
    var job = txtJob.text
    var description = txtDesc.text

    let dataObject = jobData(company: company, job: job, desc: description)
    datas.append(dataObject)
    self.jobTableView.reloadData()
    txtCompName.resignFirstResponder()
    txtJob.resignFirstResponder()
    txtDesc.resignFirstResponder()
}

现在在 cellForRowAtIndex 方法中

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell  = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! jobTableViewCell
    let data = datas[indexPath.row]

    if let companyName = data.CompanyName  {
        cell.compLabel.text = companyName
    }

    if let job = data.job  {
        cell.jobLabel.text = job
    }

    if let descr = data.desc  {
        cell.descLabel.text = descr
    }

    return cell
}

在 numberofRowsInSection 方法中 return datas.count 检查为什么 data.CompanyName 为空并确保所有文本字段都有文本。