You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中通过segue传值时目标控制器接收对象为nil问题求助

问题根因

你代码中存在变量名拼写不匹配的错误,这是导致传值失败的直接原因:

  • prepare方法内你定义的目标控制器变量名为dVeiwController
  • 后续给property赋值时误用了未初始化的变量detailVeiwController,赋值操作完全没有执行,目标控制器的隐式解包属性property自然为空,触发崩溃。

修正后的prepare方法代码

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // 用guard统一做可选绑定,避免拼写错误
    guard segue.identifier == "sPropSegue",
          let indexPath = tableView.indexPathForSelectedRow,
          let detailViewController = segue.destination as? PDViewController else {
        return
    }
    let prop = modelProperty.props[indexPath.row]
    detailViewController.property = prop
}

额外校验和优化点

  • 确认storyboard中segue的identifier确实为sPropSegue,大小写完全匹配
  • 确认segue的目标控制器类确实设置为PDViewController
  • 建议修改目标控制器的属性写法,避免隐式解包的崩溃风险:
var property: Property?
    
override func viewDidLoad() {
    super.viewDidLoad()
    // 先解包再使用,更安全
    guard let property = property else { return }
    propImage.image = UIImage(named: property.imageName)
    priceLabel.text = property.price // 注意原代码的priceLable拼写错误,Lable应为Label
    addressTextView.text = property.address
}

内容的提问来源于stack exchange,提问作者ASN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:36:06