Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为segue传递数据nil做准备_Swift_Firebase_Uistoryboardsegue - Fatal编程技术网

Swift 为segue传递数据nil做准备

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

我实际上没有更改任何代码,但在更新到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.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)”)之前还是之后吗?是的,我在后面调用打印语句:/哇,就是这样。。。老兄,非常感谢你,你真的帮了我很多时间,上帝保佑你,我的朋友