如何传递结构数据以准备定居

时间:2019-02-10 18:11:41

标签: swift

当尝试将数据从一个ViewController传递到另一个ViewController时,出现以下错误:“无法将'activityTableViewController.request'类型的值分配给'activityDetailTableViewController.request?'”

我在做什么错了?

第一个视图控制器:

class activityTableViewController: UITableViewController {

struct request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String

    init(fromDateAndTime: String, toDateAndTime: String, createdBy: String) {
        self.fromDateAndTime = fromDateAndTime
        self.toDateAndTime = toDateAndTime
        self.createdBy = createdBy
    }
}

var requestList: [request] = []

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "activityToDetail" {
        if let nextViewController = segue.destination as? activityDetailTableViewController {
            let indexPath = tableView.indexPathForSelectedRow
            nextViewController.requestDetail = requestList[indexPath!.row]
        }
    }
}

}

第二个视图控制器:

class activityDetailTableViewController: UITableViewController {

struct request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String

init(fromDateAndTime: String, toDateAndTime: String, createdBy: String)    {
        self.fromDateAndTime = fromDateAndTime
        self.toDateAndTime = toDateAndTime
        self.createdBy = createdBy
    }
}

var requestList: request!

}

2 个答案:

答案 0 :(得分:0)

您只需拥有1个struct,因为它将在所有应用程序中可见,并且可以从任何类中删除它

struct Request {
    var fromDateAndTime,toDateAndTime,createdBy: String 
}

加上无需在结构类型中写入init并以大写字母开头

  

无法声明一个与另一个名称相同的结构,这是一种语言逻辑约束

答案 1 :(得分:0)

首先,请遵循类和结构名称以大写字母开头的命名约定。

这两个结构似乎相同,但是它们是不同的对象,因为它们在不同的名称空间中声明。

在任何类之外

创建一个结构并删除初始化程序,因为您可以免费获得它。

struct Request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String
}