Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 显示视图控制器错误_Swift_Xcode_Viewcontroller - Fatal编程技术网

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%确定它应该是
选项页面视图控制器
,请仔细检查提供该值的任何代码,以确保它已正确初始化(但无论如何,您仍应正确地将其展开)