线程1:信号SIGABRT(无法转换类型的值)

时间:2017-08-30 12:31:14

标签: ios swift casting

我在xcode8上使用swift3制作iOS应用。

我的故事板就是这个(storyboard)。

如果我从左侧单击第三个TableViewController上的按钮,将出现第四个。第四个是ViewController,用于选择库或相机将照片放到第三个TableViewController上的imageView上。

我在第四个ViewController文件中编写了下面的函数。该功能是在拍摄或选择照片时调用的方法。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    let image = info[UIImagePickerControllerOriginalImage] as! UIImage

    if info[UIImagePickerControllerOriginalImage] != nil {

        DispatchQueue.main.async {

            let navigationController = self.presentingViewController as! UINavigationController

            let originVc = navigationController.topViewController as! SettingTableViewController

            originVc.image = image

            self.dismiss(animated: true, completion: nil)
        }

    }

    picker.dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true, completion: nil)
}

运行此操作后,let navigationController = self.presentingViewController as! UINavigationController部分会突出显示,并显示Thread 1: signal SIGABRT。并且还显示错误Could not cast value of type '[APPNAME].ViewController' to 'UINavigationController' (0x10f85c4a8).(* [APPNAME]是我的应用名称)。

你对此有所了解吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

此次崩溃告诉您presentingViewController 不是 UINavigationController,实际上是UIViewController,因此您需要使用{{1} }}属性并使用.navigationControllerif let来避免任何问题

guard