swift - 对象在 swift 中是 nil segue
问题描述
我试图将一个对象从一个视图控制器传递到另一个视图控制器,但接收器收到nil并抛出一个错误:致命错误:在隐式展开可选值时意外发现 nil:文件
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "sPropSegue" {
if let indexPath = tableView.indexPathForSelectedRow {
let prop = modelProperty.props[indexPath.row]
let dVeiwController = segue.destination as? PDViewController
detailVeiwController?.property = prop
}
}
}
UIViewController 中的代码
var property: Property!
override func viewDidLoad() {
super.viewDidLoad()
propImage.image = UIImage(named: property.imageName)
priceLable.text = property.price
addressTextView.text = property.address //propImage.image = UIImage()
// Do any additional setup after loading the view.
}
请帮我解决这个问题。
先感谢您!
解决方案
根据我的理解,您没有在 PDViewController 中获取属性对象。
所以尝试调试它。确保 prop 不为零。
在注释 viewDidLoad() 代码后尝试执行相同的代码。
还要确保您self.table.delegate = self
在尝试执行 segue 的控制器中有。
推荐阅读
- sql - 使用 SELECT 来评估函数?
- python - 使用熊猫选择数据框中两个特定字符串之间的所有行
- java - cascade = CascadeType.ALL not working is spring data jpa
- botframework - 检测 Bot Framework 中的主题设置,即深色、高对比度、默认
- javascript - Javascript TypeError:无法读取未定义的属性“查找”
- javascript - Firebase 动态链接在 iOS 14 上的 Safari 中留下空白页面
- node.js - 为什么我只能运行全局安装的包?
- kubernetes - 使用 Docker 驱动程序启动 Minikube 并将其绑定到主机网络
- gitlab - Gitlab 管道中的 Datadog 日志记录
- oracle - 通过 oracle 制作 PL/SQL 块时,是否可以创建一个表,然后在同一个块中修改该表?