Swift 为segue传递数据nil做准备
我实际上没有更改任何代码,但在更新到Xcode 12之后,用于传递数据的prepare for Segue方法不再有效Swift 为segue传递数据nil做准备,swift,firebase,uistoryboardsegue,Swift,Firebase,Uistoryboardsegue,我实际上没有更改任何代码,但在更新到Xcode 12之后,用于传递数据的prepare for Segue方法不再有效 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "toDetails" { if let indexPath = sender as? IndexPath, let nextVC = segue.des
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDetails" {
if let indexPath = sender as? IndexPath, let nextVC = segue.destination as? JobDetailViewController {
nextVC.jobDetails =
JobDetailViewController.JobDetails(jobDetail: jobs[indexPath.row].text, userName: jobs[indexPath.row].addedByUser!, jobImage: jobs[indexPath.row].jobImage, downloadURL: jobs[indexPath.row].downloadURL!)
}
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "toDetails", sender: indexPath.row)
}
详细说明:
var jobDetails: JobDetails?
struct JobDetails {
var jobDetail: String
var userName: String
var jobImage: UIImage?
var downloadURL: String?
}
(例如)
通过打印(“Hello(jobDetails?.userName)”)我得到作为输出的“Hello nil”
新的Swift/Xcode版本是否有任何更改?
我也没有收到任何错误/警告请看一看,您正在传递indexPath.row,它是Int,在prepare中,您正在将它解析为indexPath
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "toDetails", sender: indexPath)
}
代码行是否被调用<代码>下一步作业详细信息?如果是,你能检查它是在“打印”(“Hello(jobDetails?.userName)”)之前还是之后吗?是的,我在后面调用打印语句:/哇,就是这样。。。老兄,非常感谢你,你真的帮了我很多时间,上帝保佑你,我的朋友