当尝试将数据从一个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!
}
答案 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
}