Swift 显示视图控制器错误
尝试将值从一个视图控制器设置为另一个视图控制器Swift 显示视图控制器错误,swift,xcode,viewcontroller,Swift,Xcode,Viewcontroller,尝试将值从一个视图控制器设置为另一个视图控制器 userAvatar = (presentingViewController as! OptionsPageViewController).newAvatar 获取错误:“致命错误:在展开可选值时意外发现nil” 错误:“线程1:EXC\U BAD\U指令(代码=EXC\U 1386\U INVOP,子代码=0x0)” 这就是我被教导从其他视图控制器获取数据的方式。由于某种原因,它现在不起作用了您从as中得到了错误命令。这意味着,presenti
userAvatar = (presentingViewController as! OptionsPageViewController).newAvatar
获取错误:“致命错误:在展开可选值时意外发现nil”
错误:“线程1:EXC\U BAD\U指令(代码=EXC\U 1386\U INVOP,子代码=0x0)”
这就是我被教导从其他视图控制器获取数据的方式。由于某种原因,它现在不起作用了您从
as中得到了错误代码>命令。这意味着,presentingViewController
并不总是一个选项页面视图控制器
,您应该有条件地将其展开。要么像这样:
if let presentingViewController = presentingViewController as? OptionsPageViewController {
userAvatar = presentingViewController.newAvatar
} else {
// do something to handle other controller types here
}
或使用防护
,如果它表示方法中的故障点:
guard let presentingViewController = presentingViewController as? OptionsPageViewController else {
return
}
userAvatar = presentingViewController.newAvatar
// continue with rest of method
或者使用条件链接,如果userAvatar
是可选的,并且nils已经在其他地方处理:
userAvatar = (presentingViewController as? OptionsPageViewController)?.newAvatar
通常,您几乎不想强制展开任何内容。你唯一应该使用它的时候是,如果你绝对100%确定它永远不会是零/错误的类型/等等,即使这样,你也应该三思而后行
如果您100%确定它应该是选项页面视图控制器
,请仔细检查提供该值的任何代码,以确保它已正确初始化(但无论如何,您仍应正确地将其展开)